프로그래머스 LEVEL 2(문자열 압축)
-
사용 언어 : javascript
-
해결 날짜 : 2022-10-31
- 해결 방법 :
- 문자열의 길이가 1000 이하이므로 N^2까지 사용 가능
- 문자열을 자를 단위를 1부터 문자열 길이의 반까지 증가시키며 반복
- 반까지 하는 이유는 반 이후로는 의미가 없기 때문
- 문자열 자를 단위만큼 증가시키며 내부 반복문을 돌리며 현재 자른 문자열과 이전에 자른 문자열과 같다면 count 증가
- 이전에 자른 문자열과 다르다면 count + 이전에 자른 문자열을 str에 추가
- 내부 반복문이 끝난 후 마지막 temp값을 추가하고 answer의 길이와 비교하여 작다면 answer update
- 회고 :
- 문자열 자를 최대 단위 half를 parseInt()로 소숫점을 버렸는데, 이 경우 문자열의 길이가 1일 때 통과하지 못하므로 올림 처리했음
-
코드
function solution(s) { let answer = 1001; const length = s.length; const half = Math.ceil(length / 2); for (let trim_index = 1; trim_index <= half; trim_index++) { let str = ''; let temp = s.substring(0, trim_index); let count = 1; for (let i = trim_index; i <= length; i += trim_index) { const cur = s.substring(i, i + trim_index); if (temp === cur) count++; else { if (count > 1) str += count + temp; else str += temp; temp = cur; count = 1; } } if (answer > (str + temp).length) answer = (str + temp).length; } return answer; }
- 출처: 프로그래머스 코딩 테스트 연습, https://school.programmers.co.kr/learn/challenges