programmers.co.kr/learn/courses/30/lessons/60057
- 문제 내용 : Run Length Encoding을 하는데 있어서 가장 적절한 길이를 찾아라
- 접근 방법 : 모든 경우의 수를 loop로 돌아서 처리한다
나의 멍청함이 한껏 빛을 발휘하는 문제였다.
문제는 쉽지만 문제의 제한 사항을 정확히 찾아내지 못해서...
- 1번 나타난 값은 1을 표시하지 않는다
- 2번부터 9번 나타난 값까지니는 한자리수 더한다.
예) abcabc = 7abc - 10번부터 99번 까지는 두자리수 더한다. 10abc
- 1000번 나타나는 a는 1000a 이다.
부주의 함이 항상 문제인데 어떻게 해결해야 될까..
function solution(s) {
if(s.length < 3) return s.length;
let max = s.length;
for (let i = 1; i <= Math.floor(s.length/2); i++) {
max = Math.min(max, getLength(i, s));
}
return max;
}
function getLength(len, s){
let last = "";
let count = 1;
let total = 0;
for (let i = 0; i <= s.length; i += len) {
let str = s.substring(i, i + len);
if (str === last) {
count++;
} else {
last = str;
total += str.length;
if(1 < count){
total+=count.toString().length;
count = 1;
}
}
}
return total;
}
728x90
반응형
'Problem Solving' 카테고리의 다른 글
Permutation (0) | 2020.09.18 |
---|---|
괄호 변환 (0) | 2020.09.15 |
Union find (0) | 2020.09.15 |
지형 이동 (0) | 2020.09.14 |
Javascript Priority Queue 오름 차순 (0) | 2020.09.14 |