keymap, targets 가 주어지는데 keymap 에는 각 자판마다 몇 개의 문자가 할당이 되었는지 문자열로 주어지고 targets 는 이러한 keymap 으로 내가 만들어야 하는 문자열이다. 최종적으로 targets 를 구현하기 위해서 최소 몇 번의 key 를 눌러야 하는 지 구해야 하는 문제다.
참조 : 대충 만든 자판
keymap 을 루프돌면서 각 키를 누르기 위해 최소 몇 번을 눌러야 하는 지를 매핑해두고 targets 를 루프돌면서 거기에 맞는 키 카운트를 구현했다.
function solution(keymap, targets) {
const keymapMapper = {};
keymap.forEach((eachKeyMap, index) => {
eachKeyMap.split('').forEach((eachKeyCode, eachKeyCodeIndex) => {
const keyCode = keymapMapper[eachKeyCode];
keymapMapper[eachKeyCode] = keyCode ?
Math.min(keyCode, eachKeyCodeIndex + 1):
eachKeyCodeIndex + 1;
})
});
let result = [];
targets.forEach((target) => {
let count = 0;
target.split('').forEach((eachTarget) => {
if(count !== -1) {
if(keymapMapper[eachTarget]) count += keymapMapper[eachTarget];
else count = -1;
}
});
result.push(count);
});
return result;
}