프로그래머스/Level_2

[프로그래머스 Level_2 / C++ / 카카오] [3차] 압축

배발자 2022. 2. 20.

목차

    반응형

    [프로그래머스 Level_2 / C++ / 카카오] [3차] 압축

    문제를 읽고 이해가 잘 되지 않아서 예제를 보고 이해를 한 문제이다. 

     

    #접근방법 

    1. A~Z 까지 unordered_map 에 <string, int> 형태로 저장 ( A : 1  ~ Z : 26 )
    2. map(사전) 에 저장되지 않은 문자열을 찾을 때까지 문자들을 새로 생성한 문자열에 이어 붙여준다. 
    3. map(사전)에 저장되지 않은 문자열을 찾으면 바로 전에 있던 값(prev)을 출력하고 이어 붙인 문자열을 사전에 등록
    4. 반복문에 종료된 후 prev에 값이 남아있다면 해당 값 또한 answer 에 넣어준다. 
    
      
    #include <string>
    #include <vector>
    #include <unordered_map>
    #include <iostream>
    using namespace std;
    unordered_map <string, int> m;
    vector<int> solution(string msg) {
    vector<int> answer;
    int cnt =1;
    for(int i=0; i<26; i++){
    string s= "";
    char c = 'A'+i;
    s+=c;
    m[s]=cnt++;
    }
    int prev = 0, j;
    string s = ""; char c;
    for(int i=0; i<msg.size(); i++){
    prev=0; s= "";
    for(j=i; j<msg.size(); j++){
    c = msg[j];
    s+=c;
    if(m[s]>0)prev = m[s];
    else{
    i=j-1;
    m[s]=cnt++;
    answer.push_back(prev);
    break;
    }
    if(j==msg.size()-1)i=msg.size();
    }
    }
    if(prev)answer.push_back(prev);
    return answer;
    }
     

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

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

    programmers.co.kr

     

    반응형

    댓글