개발 공부

(프로그래머스)(자바스크립트 )압축 본문

알고리즘

(프로그래머스)(자바스크립트 )압축

아이셩짱셩 2021. 7. 16. 14:13

코딩테스트 연습 - 2018 KAKAO BLIND RECRUITMENT - [3차] 압축

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

 

//하루
var nextNum;

var logFlag = false;

function solution(msg) {
    //if(msg === 'ABABABABABABABAB') logFlag = true;
    //if(!logFlag) return;
    
    var answer = [];
    var dict = initDictionary();
    
    while(msg){
        //if (logFlag) console.log("메시지 :",  answer);
        
        var index = 0;
        //해당 인덱스의 캐릭터
        var pop = msg.charAt(index);
        
        //KAO, 0, K, 15
        //KAO, 1, KA, 15
        var flag = true;
        while(flag){
            var tempVal = dict[pop];
            
            index += 1;
            pop += msg.charAt(index);
            var tempVal2 = dict[pop];
            //KAO, 1, KA, 15
            if(!tempVal2 ||  pop.length == msg.length){
                //마지막 단어인경우
                if(tempVal2){
                    answer.push(tempVal2);
                    msg = '';
                    if (logFlag) console.log(msg);
                    flag = false;  
                    break;
                }
                
                answer.push(tempVal);
                dict[pop] = nextNum;
                nextNum++;
                msg = msg.slice(index);
                flag = false;  
                break;
            }
        }
        
    }
    if (logFlag) console.log(dict);
    return answer;
}


function initDictionary(){
    var obj = {};
    var num = 1;
    for(var i = 'A'.charCodeAt(0) ; i<= 'Z'.charCodeAt(0) ; i++){
        obj[String.fromCharCode(i)] = num;
        num++;
    }
    nextNum = num;
    return obj;
}
Comments