프로그래머스 대충 만든 자판(자바스크립트)

이진우·2023년 12월 7일

keymap, targets두개의 배열이 주어지는데
targets에 있는 문자를 완성시키기 위해서는 keymap배열에 있는 단어와 그단어의 순서대로 입력을 해야하는데 최소한의 타이핑으로 완성시킬수 있는 값을 구해야한다
단, 입력해야할 문자가 keymap에 존재하지 않는다면 -1을 리턴한다

function solution(keymap, targets) {
    let answer = [];
    let map = new Map();
    
    for (let key of keymap) {
        for (let i = 0; i < key.length; i++) {
            if (map.get(key[i]) > i + 1 || !map.has(key[i])) map.set(key[i], i+1);
        }
    }
    
    for (let tar of targets) {
        let targetLength = 0;
        for (let i = 0; i < tar.length; i++) {
            if (!map.has(tar[i])) {
                targetLength = -1
                break;
            } else {
                targetLength += map.get(tar[i])
            }
        }
        answer.push(targetLength);
    }
        
    return answer;
}
  1. map을 생성후 keymap에 키와 인덱스를 저장해주는데 새로들어오는 값이 저장된값보다 작을경우에만 재할당을 해줘서 각각 키들의 최소값을 구해준다
  2. targets 배열에있는 단어를 순서대로 한글자씩 map에 저장해둔 값을 찾고 값이 없을경우 -1을 저장후 for문을 종료하고 값이 있는경우엔 값을찾아 합한후 배열에 차곡차곡 저장해준다

요즘프로그래머스 문제들 보면 map을 활용해서 푸는 문제들이 자주보이는데 적절히 활용하면 쉽게 알고리즘을 풀 수 있을거같다 연습을 해봐야겠다

profile
초보개발자의 개발일기

0개의 댓글