프로그래머스 [3차] 압축 JavaScript
2023년 1월 1일
문제 풀이
재풀이 중 ...
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];
}
}