[JS][프로그래머스LV2]압축
Algorithm/Programmers

[JS][프로그래머스LV2]압축

문제 번호

 

코딩테스트 연습 - [3차] 압축

TOBEORNOTTOBEORTOBEORNOT [20, 15, 2, 5, 15, 18, 14, 15, 20, 27, 29, 31, 36, 30, 32, 34]

programmers.co.kr

 

 

알고리즘 분류

 특별한 알고리즘은 없다. 문제에서 요구하는대로 구현하면 되는 문제이다.

정규표현식과 메서드들을 잘 사용한다면 쉽게 풀 수 있다.

 

전체코드

function solution(msg) {
    var answer = [];
    let dictionary = ['A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z'];
    
    
    let reg = new RegExp(`${msg[0]}`);
    let c = reg.exec(msg);
    let w = '';
    let past = 0;
    
    for(let i=0; i<msg.length; i++){
        reg = new RegExp(`${msg[i]}`);
        c = reg.exec(msg);
        w += c;        
        
        if(dictionary.includes(w)){
            past = dictionary.indexOf(w);
            continue;
        }
        else {
            //console.log(past+1);
            answer.push(past+1)
            dictionary.push(w);
            w = msg[i];
            past = dictionary.indexOf(w);
        }
    }
    //console.log(dictionary.indexOf(w)+1);
    answer.push(dictionary.indexOf(w)+1)
        
    
    //console.log(dictionary);
    
    return answer;
}

문제 풀이

 

 

특이사항