코드 풀이

문자열 압축

SammyK 2022. 3. 25. 15:56

풀이:

function solution(s) {
    var answer = [s.length]; 
    for(let i=1;i<=(s.length/2);i++){ 
        let cnt=1;
        let sub_str="";
        for(let j=0;j<s.length;j+=i){
            const first=s.substring(j,j+i);
            const second=s.substring(j+i,j+i*2);
            if(first===second){
                cnt+=1;
            }else{
                    sub_str += (cnt > 1 ? cnt : '') + first
                    cnt=1;
                    first == second;
                }
            }
        answer.push(sub_str.length);
    }
    return Math.min(...answer);
}

문자열은 제일 앞부터 정해진 길이만큼 잘라야 합니다라는 제한이 있기에, 압축될수 있는 최대 길이는 배열의 반이다.

그래서 반만큼 돌아가는 for 문으로 시작함.

만약 한개도 압축을 못하면 답은 1을 내줘야 하기에 먼저 카운트 1을 줍니다.

그리고 압축한 문자열을 넣을 sub_str 을 만들어 줍니다.

왼쪽값 과 오른쪽 값을 비교해야 하니 또 다른 for 문을 적어 비교를 해봅니다.

first 는 처음 문자열, second 는 그다음 문자열, 만약 같으면 카운트 1을 올려줍니다.

같지 않고 카운트가 1보다 높으면 왼쪽값과 오른쪽 값을 붙여 다시 비교합니다.

그후 하나씩, 둘씩 앞축을 했던 값의 길이를 answer 에 넣어줍니다. 

그후 제일 작은 길이의 값을 출력합니다.

 

'코드 풀이' 카테고리의 다른 글

멀쩡한 사각형  (0) 2022.03.28
오픈 채팅방  (0) 2022.03.26
체육복  (0) 2022.03.17
비밀지도  (0) 2022.03.17
소수 찾기  (0) 2022.03.17