코딩테스트 연습

프로그래머스 코딩테스트 연습 - 대충 만든 자판 JavaScript

citron031 2023. 3. 1. 15:14

이번 문제는 해결은 어렵지 않았으나, 처음 봤을 때 문제를 이해하기가 어려웠다.

function solution(keymap, targets) {
    const answer = [];
    const keyMapObj = {};
    keymap.forEach(el => {
        for(let i = 0; i < el.length; i++) {
            if(!keyMapObj[el[i]] || keyMapObj[el[i]] > i + 1) {
                keyMapObj[el[i]] = i + 1; 
            }
        }
    });
    for(let i = 0; i < targets.length; i++) {
        let count = 0;
        for(j of targets[i]) {
            if(!keyMapObj[j]) {
                count = -1;
                break;
            }
            count += keyMapObj[j];
        }
        answer.push(count);
    }
    return answer;
}

결론적으로는, 객체로 최단 접근 값을 구하고 그 값을 바탕으로 가장 빠르게 타겟을 생성하는 알고리즘을 작성할 수 있었다.

 

문제 해결 후 다른 사람이 작성한 코드를 확인하였는데, 다양한 해결 방법이 있는 것 같았다.

어떤 방법이 더 효율적인가 생각해볼 여지가 있는 문제인 것 같다.