풀이 과정
- 알파벳을 키, 인덱스를 값으로 하는 사전 객체 만들기
- 주어진 문자열의 각 문자에 대해 반복
- 현재 문자부터 끝까지 ~ 현재 문자까지 줄이면서 반복
- 일치하는 인덱스가 있으면 인덱스를 결과 배열에 추가하고 문자열에서 제거
이때 일치하는 문자 다음 문자를 붙인 값을 사전에 추가
코드
function solution(msg) {
const dict = {};
[...'ABCDEFGHIJKLMNOPQRSTUVWXYZ'].forEach((c, i) => (dict[c] = i + 1));
let arr = [...msg];
const result = [];
while (arr.length) {
for (let i = arr.length - 1; i >= 0; --i) {
const str = arr.slice(0, i + 1).join('');
const index = dict[str];
if (index && i != arr.length - 1) {
dict[str + arr[i + 1]] = Object.keys(dict).length + 1;
}
if (index) {
result.push(index);
arr = arr.slice(i + 1);
break;
}
}
}
return result;
}