본문 바로가기
개발/Coding Test

[프로그래머스 C++ Lv2] 압축

by Eunduck 2022. 6. 7.
728x90

안녕하십니까. Eun🦆입니다.

풀이법 입니다.

 

 

코딩테스트 연습 - [3차] 압축

TOBEORNOTTOBEORTOBEORNOT [20, 15, 2, 5, 15, 18, 14, 15, 20, 27, 29, 31, 36, 30, 32, 34]

programmers.co.kr

#include <string>
#include <vector>
#include <map>
using namespace std;
vector<int> solution(string msg) {
    vector<int> answer;
    int cnt = 0;
    map<string,int> dic; // key 단어, value 출력
    for(;cnt<=26;cnt++)
    {
        string v = to_string('A'+cnt);
        dic[v]=cnt+1;
    }
    /*for(int i=0;i<26;i++)
    {
        printf("dic['A'+%d]=%d\n",i,dic['A'+i]);
    }*/
    string sav_msg = "";
    int tring = 0;
    for(int i=0;i<=msg.size();i++)
    {
        tring++;
        //printf("#try:%d! msg[%d]=%c\n",tring,i,msg[i]);
        string tmp_msg = "";
        tmp_msg += sav_msg;
        tmp_msg += to_string(msg[i]);
        if(dic[tmp_msg]==0) // 사전에 정의되어 있지 않다면
        {
            //printf("no jutify! new justify!\n");
            answer.push_back(dic[sav_msg]);
            //printf("answer insert! %d\n",dic[sav_msg]);
            dic[tmp_msg] = cnt++; // 새로 정의
            sav_msg = to_string(msg[i]);
        }
        else
        {
            //printf("jutify! sav +msg[%d]\n",i);
            sav_msg += to_string(msg[i]);
        }
    }
    
    return answer;
}

 

네이버 블로그 리뉴얼입니다.

(https://blog.naver.com/unsuk1/221962050470)

728x90

댓글