반응형

문제 설명

문제 원본은 프로그래머스에 있습니다.

 

출처: 프로그래머스

 

제한 사항

 

출처: 프로그래머스

 

 

풀이

우선 문제를 보고 바로 드는 생각은 다른 것보다 반복문을 몇 개를 써야 하는지 였다.

나의 접근 방법

  • 문자열은 1개부터 전체 문자열/2개 까지 자를 것이다.(그 이상은 잘라도 중복이 있을 수가 없으니..)
  • 다음 글자부터 순환하되, 자른 문자열의 길이만큼 이동한다.
  • 문자열 중간중간에 중복된 개수가 들어가야 하므로 자른 문자열을 잘 보관해놓는다.

원래 성격이 우선 돌아가게 짜 놓고.. 전체적으로 읽어본 다음에 불필요해 보이는 걸 정리하는 편이라.. 생각나는 대로 반복문을 적었다. 우선 최소 2개부터 시작..

 

문자열 사이에 숫자를 넣는 게 내 생각처럼 되지 않아서 구글링의 힘을 빌렸다.

 

그래서 나온 소스코드

 

function solution(s) {
    var answer = s.length, len = parseInt(s.length/2), totalLen = s.length;
    
    for(let i=1; i<=len; i++) {
        let cnt = 1;
        let temp = "";
        
        for(let j=0; j<totalLen; j += i) {
            let curText = s.substring(j, i+j);
            let nextText = s.substring(i+j, j+i*2);
            
            if(curText == nextText) {
                cnt++;
            } else {
                if(cnt == 1) {
                    temp += curText;
                } else {
                    temp += (cnt+curText);
                    cnt = 1;
                }
            }
        }
        
        answer = Math.min(answer, temp.length);
    }
    
    return answer;
}

 

제출 후 다른 사람의 풀이를 봤는데 역시 다양한 코드가 많이 보였다.

나도 좀 더 고민해볼걸..

반응형