https://school.programmers.co.kr/learn/courses/30/lessons/160586
function solution(keymap, targets) {
const answer = [], keyHashMap = {};
keymap.forEach((v,i)=>{
[...v].forEach((w, j)=>{
keyHashMap[w] = Math.min(keyHashMap[w] === undefined ? 1e9 : keyHashMap[w], j);
});
})
targets.forEach((v)=>{
let cnt = 0;
[...v].forEach((w)=>{
cnt += keyHashMap[w] + 1;
})
answer.push(cnt ? cnt : -1);
})
return answer;
}
keymap
요소의 문자 인덱스가 빠른 순서로 hash map
으로 만들었다. 어느 keymap
을 눌러야 빠른지 한참 고민했다가 내린 결론이었다.
targets
요소를 순환하면서 keyHashMap
에 들어있는 문자의 인덱스 +1
을 누적한 값이 해당 문자를 입력하기 위해 클릭한 값이 된다. 만약, 문자가 keyHashMap
에 없다면 -1
을 넣는다.