전공공부/코딩테스트
(c++) 프로그래머스 "[3차] 압축"
시아나
2022. 4. 28. 17:26
https://programmers.co.kr/learn/courses/30/lessons/17684
코딩테스트 연습 - [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;
map<string, int> m;
int index = 1;
for (char c = 'A'; c <= 'Z'; c++) {
string tmp; tmp += c;
m.insert({ tmp,index++ });
}
for (int i = 0; i < msg.size(); i++) {
string search; search += msg[i];
while (i < (msg.size() - 1) && m.find(search + msg[i + 1]) != m.end()) {
search += msg[++i];
}
answer.push_back(m.find(search)->second);
if (i < (msg.size() - 1)) {
m.insert({ search + msg[i + 1],index++ });
}
}
return answer;
}