function solution(msg) {
const strArr = msg.split("");
//색인배열 1부터 시작이라서 0번째는 아무 문자나 집어넣었다.
const indexArr = [
'@','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'
]
const answer = [];
//카운팅을 해줄 변수
let index = 0;
//색인배열에 들어갈 문자열
let tempStr = "";
//for문이 별탈없이 끝까지 진행되었는가 -> 끝부분단어를 색출하는 변수
let isEnd = true;
while(index < strArr.length) {
for(let i = index; i < strArr.length ; i ++) {
tempStr += strArr[i];
if(!indexArr.includes(tempStr)) {
isEnd = false;
break;
}
}
//끝부분이 색출되면 그 단어를 그대로 push하고 while문을 종료
if(isEnd) {
answer.push(indexArr.indexOf(tempStr));
break;
}
//기존에 주어진 색인에 있는 단어
if(tempStr.length === 2) {
answer.push(indexArr.indexOf(tempStr[0]));
index++;
indexArr.push(tempStr);
//기존에서 추가된 색인에 있는 단어
} else {
answer.push(indexArr.indexOf(tempStr.slice(0, tempStr.length - 1)));
index = parseInt(index) + parseInt(tempStr.length - 1);
indexArr.push(tempStr);
}
tempStr = "";
isEnd = true;
}
return answer;
}
풀면서 막혔던 부분은
끝부분에 색출될때 예외처리를 해주는 생각이 바로 떠오르지 않아 잠시 고민했지만 변수를 추가하여서 그 여부를 판단하여 처리하였다.