function solution(msg) {
const answer = [];
let alphabetMap = new Map();
Array.from({ length: 26 }, (_, index) => {
let str = String.fromCharCode(index + 65);
alphabetMap.set(str, index + 1);
});
let str = "";
for (let i = 0; i < msg.length; i++) {
str += msg[i];
// 만약 알파벳 Map 객체가 해당 문자 + 다음 문자열을 포함하고 있지 않다면
if (alphabetMap.get(str) && !alphabetMap.get(str + msg[i + 1])) {
answer.push(alphabetMap.get(str));
alphabetMap.set(str + msg[i + 1], alphabetMap.size + 1);
str = "";
}
}
return answer;
}
Map을 활용해서 풀이했다.
먼저 알파벳들을 담을 Map 객체를 만들어 준 후, 각 index+1 값을 색인 번호로 넣어준다.
해당 문자열의 반복문을 돌면서 만약 해당 문자열 + 다음 문자열이 Map 객체에 존재하지 않는다면, 무조건 단 한개의 문자열은 알파벳이라 Map객체에 있을것이니, 그 값을 answer 배열에 넣어주 고 알파벳 Map 에 해당 문자열 + 다음 문자열의 색인 번호를 추가해준다.
하지만 이렇게 풀이하면, 맨 마지막에 무조건 undefined 값이 나오는데, 마지막 값은 어차피 포함을 안시키므로 상관이 없다.