728x90
728x90
- A~Z 까지 map 함수에서 값을 저장한다.
- 반복문으로 msg 길이만큼 실행 시킨다.
- 임시 string w에 msg값을 저장하여 해당 값이 map 함수에 있는지 조사한다. 만약 있을 경우 msg의 다음 문자를 탐색하기 위해 j값을 1 증가 시키고 w값에 다음 msg 값을 저장한다.
- 탐색도중 해당 string w를 찾지 못했으면 while문에 빠져나와서 map 함수에 해당 w 에 대한 값을 업데이트 시킨후 벡터 함수 answer에 w의 전 값을 저장한다. w의 전 값은 단순히 pop_back()을 사용한다.
string(1, 'A' + i)을 이용해서 char 값을 string으로 접근.
#include <string>
#include <vector>
#include <map>
using namespace std;
vector<int> solution(string msg) {
vector<int> answer;
map<string,int> LZW;
int idx = 0;
for(idx; idx< 26; idx++) LZW[string(1,'A' + idx)] = idx + 1;
for(int i =0,j=i,count = 0; i< msg.size(); i++,count = 0)
{
string w = "";
w += msg[i];
while(LZW.find(w) != LZW.end()) count++,j++,w += msg[j];
idx++,count--,i += count,LZW[w] = idx;
w.pop_back();
answer.push_back(LZW[w]);
}
return answer;
}
728x90
728x90