-
문제
https://programmers.co.kr/learn/courses/30/lessons/60057
코딩테스트 연습 - 문자열 압축
데이터 처리 전문가가 되고 싶은 "어피치"는 문자열을 압축하는 방법에 대해 공부를 하고 있습니다. 최근에 대량의 데이터 처리를 위한 간단한 비손실 압축 방법에 대해 공부를 하고 있는데, 문
programmers.co.kr
How to Solve ?
얼마만큼의 길이로 문자열을 나눴을 때, 최소 길이를 얻을 수 있는지 묻는 문제이다.
문제의 의도가 "얼마만큼의 길이로 잘랐을 때" 라고 요구하는 것을 통해서, 루프를 돌 때마다 한번에 확인하는 문자열의 길이를 늘려주면 되겠다는 생각을 가지게 되었다.
가능하면 O(n) 으로 풀고 싶다는 생각 때문에, 루프를 하나만 돌리려고 하니까 문자열의 길이가 늘어날때마다 모든 배열을 보는 것이 어렵다고 판단하여 for loop를 두번 쓰는걸로 문제를 해결하였다..
function solution(s) { let answer = 0; const countArr = []; for (let i = 0; i < s.length; i++) { let jump = i + 1; let count = 1; let newStr = ""; for (let j = 0; j < s.length; j = j + jump) { let currentStr = s.substring(j, j + jump); let nextStr = s.substring(j + jump, j + jump + jump); if (currentStr === nextStr) { count += 1; } else { if (count !== 1) { newStr += count + currentStr; } else { newStr += currentStr; } count = 1; } } countArr.push(newStr.length); } answer = Math.min(...countArr); return answer; }
'PS > 프로그래머스' 카테고리의 다른 글
[프로그래머스_Lv2] 실패율 ( by using JavaScript ) (0) 2021.05.21 [프로그래머스_Lv2] 오픈채팅방 ( by using JavaScript ) (0) 2021.05.21 [프로그래머스] 로또의 최고 순위와 최저 순위 ( by using JavaScript ) (0) 2021.05.18 [프로그래머스] 폰켓몬 ( by using JavaScript ) (0) 2021.05.18 [프로그래머스_Greedy ] 구명보트 ( by using JavaScript ) (0) 2021.04.27 댓글