문제 링크

문제 풀이

두 개의 배열을 사용해야 한다. dic, answer
for문을 돌면서 조건을 검증하고 두 개의 배열 중 한 곳에 넣어준다.
최종적으로 answer를 return한다.

이 문제도 그렇지만,
어떤 한 턴만의 요소를 필요로 하지 않고
앞 뒤 요소를 끌어와 함께 사용해야 하는 경우가 있다.
이럴 때 reduce를 사용하면 조금 더 깔끔해진다.

전체 코드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
function solution(msg) {
const dic = "~ABCDEFGHIJKLMNOPQRSTUVWXYZ".split("");
const answer = [];

answer.push(
dic.indexOf(
msg.split("").reduce((acc, cur) => {
if (dic.indexOf(acc + cur) > -1) return acc + cur;
answer.push(dic.indexOf(acc));
dic.push(acc + cur);
return cur;
}, "")
)
);

return answer;
}