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