프로그래머스 Level 2 - 압축
📌 문제 설명
📌 생각한 풀이 방법
- A~Z까지 arr에 저장한다.
- letterObj 객체에 key로 A, value: 1 형태로 저장한다.
- msg를 배열인 message로 변환한다
- 현재 단어인 current와 다음 단어인 next를 합친 current+next가 letterObj에 존재하면, 다음 단어와 합쳐 해당 값이 존재할 때까지 반복한다.
- current+next가 존재하지 않을 때, 해당 단어를 answer에 push한다.
- current+next를 letterObj 마지막에 추가한다.
- message가 존재할 때까지, 4~6을 반복한다.
📌 풀이
function solution(msg) {
let answer = [];
let arr = Array.from({ length: 26 }, (_, index) =>
String.fromCharCode(index + 65)
);
let letterObj = {};
arr.map((current, index) => (letterObj[current] = index + 1));
let message = msg.split("");
while (message.length) {
let current = message.shift();
let next = message[0];
while (letterObj[current + next]) {
message.shift();
current = current + next;
next = message[0];
}
answer.push(letterObj[current]);
letterObj[current + next] = Object.keys(letterObj).length + 1;
}
return answer;
}