[프로그래머스 -LEVEL 2 - [3차] 압축 ]

정대만·2023년 7월 1일

코딩테스트

목록 보기
10/51
post-thumbnail

설명

하나씩 단어를 추가하면서 사전에 있는 단어일시 , 더하기전 단어의
사전 번호를 출력하는 것 !

내풀이

alpha을 object 형식으로 a:1 , 이런식으로 만들어줌 이때

  • String.fromCharCode(i) 사용
  • 하나씩 더해주기 위해서 포인터 방식을 사용하였다.
function solution(msg) {
    var answer = [];
    var alpha={};
    var gogo=1;
    for(var i=65; i<=90; i++){ 
        alpha[String.fromCharCode(i)]=gogo;
        gogo+=1;
    }
 var return_num=[];
 var pointer_alpha=1;
 var start_alpha=msg[0];
 var hey_retur=[];
 var plus_befor=''
  while(pointer_alpha<msg.length){
        plus_befor=start_alpha
        start_alpha+=msg[pointer_alpha];
 
      if(!alpha[start_alpha]){
          hey_retur.push(alpha[plus_befor]);
          alpha[start_alpha]= gogo;
          gogo+=1;
          start_alpha=msg[pointer_alpha];
      }

        pointer_alpha+=1;
       
    }
   
     hey_retur.push(alpha[start_alpha]);
   
      return (hey_retur) 
    
}

다른 사람 풀이

  • reduce 를 사용한것을 봄
function solution(msg) {
    const answer = [];
    let nextWord = "";
    let lastCount = 27;
    const dir = {
                 A: 1, B: 2, C: 3, D: 4, 
                 E: 5, F: 6, G: 7, H: 8, 
                 I: 9, J: 10, K: 11, L: 12, 
                 M: 13, N: 14, O: 15, P: 16, 
                 Q: 17, R: 18, S: 19, T: 20, 
                 U: 21, V: 22, W: 23, 
                 X: 24, Y: 25, Z: 26
                };
   const s = msg.split("").reduce((acc, cur) => {
       nextWord = acc + cur;
       if (dir[nextWord] === undefined) {
           dir[nextWord] = lastCount++;
       } else {
           return acc + cur;
       }
       if (dir[acc] !== undefined) answer.push(dir[acc]);
       return cur;
   });
   
   answer.push(dir[s]);
    
   return answer;
}
profile
안녕하세요

0개의 댓글