프로그래머스 [3차] 압축 JavaScript

2023년 1월 1일

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

문제 풀이

재풀이 중 ...

solution.js
function solution(msg) {
    let answer = [];
    let dic = ['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'];

    for (let i = 0; i < msg.length; i++) {
        let w = msg[i];
        let c = i+1;
        let temp = 0;
        const wLength = searchRange(msg, i, dic);
        if (wLength !== 0) {
            for (let j = 1; j <= wLength; j++) {
                w = w + msg[i+j];
                temp++;
                c++;
            }
        }
        answer.push(dic.indexOf(w)+1);
        if (c < msg.length) {
            dic.push(w+msg[c])
        }
        i += temp;
    }
    return answer;
}

function searchDic(word, dic) {
    return dic.indexOf(word);
}

function searchRange(msg, idx, dic){
    let w = msg[idx];
    let range = 0;
    let c = msg[idx+1];
    if (idx === msg.length-1) return 0

   
    while (true) {
        if (searchDic(w+c, dic) == -1) return range
        w = w+c;
        range += 1;
        c = msg[idx + range + 1];
    }
}

댓글