C++:: 프로그래머스 < [3차] 압축 >

jahlee·2023년 7월 13일
0

프로그래머스_Lv.2

목록 보기
76/106
post-thumbnail

주어진 조건대로 문자열을 인덱스화 하면서 압축하면 되는 문제이다. 크게 어렵지는 않다.

#include <string>
#include <vector>
#include <unordered_map>
using namespace std;

vector<int> solution(string msg) {
    vector<int> answer;
    int size = msg.size(), idx = 27;// 알파벳 26 이후부터 인덱스 추가
    unordered_map<string, int> um;// 새로운 인덱스 넣을 곳

    for (int i=0; i<size;) {
        string w = msg.substr(i, 1);
        int j = i+1;
        for (; j<size; j++) {
            if (um[w + msg[j]] == 0) {// 인덱스에 없다면
                um[w + msg[j]] = idx++;// 인덱스 추가
                break ;
            }
            w += msg[j];//문자열 늘려줌
        }
        if (w.size() == 1) answer.push_back(w[0] - 'A' + 1);// 길이가 1일떄 인덱스 구해주기
        else answer.push_back(um[w]);// 인덱스 넣어 놓은것 값으로
        i = j;
    }
    return answer;
}

0개의 댓글