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

잡초·2024년 5월 27일
0
post-thumbnail

문제

풀이

function solution(keymap, targets) {
  const answer = []; // 결과를 저장할 배열
  const map = new Map(); // 각 키의 최소 누르기 횟수를 저장할 맵

  // keymap 배열을 반복하면서 각 키의 최소 누르기 횟수를 맵에 저장
  for (const key of keymap) {
    for (let i = 0; i < key.length; i++) {
      // 현재 키가 맵에 없거나, 현재 키의 누르기 횟수가 기존 값보다 작으면 변경
      if (!map.has(key[i]) || i + 1 < map.get(key[i])) map.set(key[i], i + 1);
    }
  }

  // targets 배열을 반복하면서 각 타겟 문자열의 최소 누르기 횟수를 계산
  for (const target of targets) {
    let count = 0; // 타겟 문자열의 총 누르기 횟수를 저장할 변수
    for (let i = 0; i < target.length; i++) {
      // 현재 문자가 맵에 존재하면 해당 문자의 누르기 횟수를 더함
      count += map.get(target[i]);
    }
    // count 값이 0이면 타겟 문자열에 없는 키가 포함된 것이므로 -1을 추가, 그렇지 않으면 count 값을 추가
    answer.push(count || -1);
  }

  return answer; // 결과 배열을 반환
}
profile
개발자가 되고싶은 잡초

0개의 댓글