[JS] 프로그래머스 Lv1 - 대충 만든 자판

찐새·2023년 5월 6일
0

코딩테스트

목록 보기
41/53
post-thumbnail

대충 만든 자판

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을 넣는다.

profile
프론트엔드 개발자가 되고 싶다

0개의 댓글