코드
function solution(msg) {
const ans = [];
const dic = {};
let nextWord = '';
let i = 27;
for(let j=65; j<91 ; j++) {
dic[String.fromCharCode(j)] = j-64;
}
const s = msg.split('').reduce((acc, cur) => {
nextWord = acc + cur;
if(dic[nextWord]) return nextWord;
else {
dic[nextWord] = i++;
ans.push(dic[acc]);
return cur;
}
})
ans.push(dic[s])
return ans
}
reduce 활용
- 사실 못 풀었다^_^
- 재귀함수로 기깔나게 풀려고 했는데 무한루프가 걸리고 왜 무한루프인지 루돌프인지 정신이 나갈 것 같아 힌트를 얻었어요!
- reduce를 잘 사용하시네....저는 reduce와 아직 어사라 조금씩 친해지는 시간을 가져볼게요
- acc + cur이 딕셔너리에 없으면 둘 합한 걸 return
- 있으면 딕셔너리 채워주고 cur을 return
- 마지막 s는 안 채워지니까? 엥 근데 다시 생각해보니까 s 마지막이 잘 채워지면 어쩔겨? 왜 다 성공 뜬거지?