[프로그래머스] 대충 만든 자판 (level1, JavaScript)

이민영·2023년 9월 18일

문제

https://school.programmers.co.kr/learn/courses/30/lessons/160586

문제풀이

function solution(keymap, targets) {
    let answer = [];
    
    const map = new Map();
  	//map을 사용하여 ketmap을 돌아 배열에 각 문자열을 비교해서 최소값만 넣어준다. 
	//ex) keymap =>["ABACD", "BCEFD"]
	//ex) map => 	Map(6) { 'A' => 1, 'B' => 1, 'C' => 2, 'D' => 5, 'E' => 3, 'F' => 4 }
    for(let i = 0; i< keymap.length; i++){
        for(let j = 0; j<keymap[i].length; j++){
             if(!map.has(keymap[i][j])){
                map.set(keymap[i][j],j+1)   
            } else{
                if(map.get(keymap[i][j]) > j+1){
                    map.set(keymap[i][j],j+1)   
                }  
            }
        }
    }
  // targets의 각각 원소들을 돌면서 저장한 map에 값들을 더해준다, 여기서 map에 값이 undefined라면 targets 문자열이 어디에도 존재하지 않기 때문에 -1을 배열에 넣어주고 종료시킨다.
    targets.forEach((target) => {
        let padNumber = 0;
        for(let i in target) {
            if(map.get(target[i]) == undefined) {
                padNumber = -1;
                break;
            }
            else padNumber+= map.get(target[i]) 
        }
      answer.push(padNumber);
    })
    
    return answer;
}

느낀점

처음에 문제를 잘못읽어서 꽤나 헤맸다...ㅎ
객체나 Map객체를 사용하면 어렵지 않게 풀 수 있다.

profile
Frontend Developer

0개의 댓글