프로그래머스 [압축] - js

압축
https://programmers.co.kr/learn/courses/30/lessons/17684


객체를 통해 값 존재 여부를 파악하고 누적 문자열을 저장하고 단순 반복문을 통해 정답을 출력하는 문제였다.

초기 문자객체는 String.fromCharCode() 를 통해 "Number ==> Char" 로 변환하여 char(key) : Number(value)로 저장하였다.

이후, while문을 통해 현재 위치에 있는 index가 msg의 길이를 넘지않게 조건을 준 다음, 저장되는 문자열이 나타나지 않을 때까지 문자열을 붙이고 새롭게 객체길이+1를 value로 주어 저장하였다.


정답코드

const solution = (msg) => {
    const answer = []
    // 문자열 저장 객체
    const wordObject = {};
  	// 초기화 작업
    for (let i=0; i<26; i++) {
        const word = String.fromCharCode(65+i);
        wordObject[word] = i+1;
    };
  
    let idx = 0;
    while (idx < msg.length) {
        let nowWord = '';
      	// 새로운 문자열이 나타나지 않을 때까지 문자열 붙히기
        while (wordObject[nowWord + msg[idx]]) {
            nowWord += msg[idx]
            idx += 1;
        }
        answer.push(wordObject[nowWord]);
      	// 새롭게 발견된 문자는 객체 길이의 +1 값이 value로 들어간다.
        const N = Object.keys(wordObject).length+1;	
      	// 새롭게 추가될 문자 저장
        wordObject[nowWord+msg[idx]] = N;
    }
}

좋은 웹페이지 즐겨찾기