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

이진우·2023년 12월 7일
0

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개의 댓글