🔥 Algorithm/Programmers

[프로그래머스] 3차 압축 (js)

Lennon 2021. 10. 29. 18:13
728x90
반응형

https://programmers.co.kr/learn/courses/30/lessons/17684?language=javascript

 

function solution(msg) {
    const alpha = "ABCDEFGHIJKLMNOPQRSTUVWXYZ".split("");
    const answer = [];
    
    for(let i = 0; i < msg.length; i++){
        for(let j = msg.length; j > i; j--){
            if(alpha.includes(msg.slice(i,j))){
                answer.push(alpha.indexOf(msg.slice(i,j))+1);
                alpha.push(msg.slice(i,j+1));
                i+=(j-i-1);
            }
        }
    }
    return answer;
}

 

가장 긴 문자열을 찾아 answer에 인덱스를 입력한 후 alpha에 push한다.

 

문자열의 길이만큼 i에 (j-i-1)을 더해 alpha에 올바르게 push될 수 있도록 한다

 

ex) kakao -> ka, ak, kao 가 되어야함 // i+=(j-i-1)을 해주지 않으면 -> ka, ak, kao, ao, o 이렇게 들어감.

 

다른 사람들은 while로 풀었지만 for문 인덱스 조절로 풀어서

 

다른 풀이들보다 시간을 효율적으로 줄일 수 있었다.

 

 

728x90
반응형