Programmers Algorithm - 대충 만든 자판

Myung Jin Kim·2023년 10월 22일
0

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;
}
profile
개발을 취미로 하고 싶은 개발자를 목표로 살고 있습니다

0개의 댓글