프로그래머스 Level 1 - 대충 만든 자판

크롱·2023년 11월 28일
0

코딩테스트

목록 보기
54/61

나의풀이

if문이 왜이렇게많을까..~

function solution(keymap, targets) { 
    var answer = [];
    for(let i=0;i<targets.length;i++){
        let count=0;

        for(const el of targets[i]){
            let indexArr=[]
            let dontHave=0
        //el= 'X'
           for(let j=0;j<keymap.length;j++){
              if(keymap[j].includes(el)){
                indexArr.push(1+(keymap[j].indexOf(el)))  
              }else{
                  dontHave++
              }
           }
          
        if(dontHave==keymap.length){
            count=0
            break
        }
          
            if(indexArr.length>0){
            count=count+Math.min(...indexArr)    
            }

        }

      if( count===0){
          answer.push(-1)
      }else{
        answer.push(count)    
      }

    }
    return answer;
}

new Map()으로 풀어보면

역시 new Map..~

function solution(keymap, targets) {
  const answer = [];
  const map = new Map();

  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);
            }
       
    }
  }


  for (const target of targets) {
    let count = 0;
    for (let i = 0; i < target.length; i++) {
      count += map.get(target[i]);
    }
    answer.push(count || -1);
  }

  return answer;
}
profile
👩‍💻안녕하세요🌞

0개의 댓글