반응형
문제를 읽고 이해가 잘 되지 않아서 예제를 보고 이해를 한 문제이다.
#접근방법
- A~Z 까지 unordered_map 에 <string, int> 형태로 저장 ( A : 1 ~ Z : 26 )
- map(사전) 에 저장되지 않은 문자열을 찾을 때까지 문자들을 새로 생성한 문자열에 이어 붙여준다.
- map(사전)에 저장되지 않은 문자열을 찾으면 바로 전에 있던 값(prev)을 출력하고 이어 붙인 문자열을 사전에 등록
- 반복문에 종료된 후 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;
}
반응형
'프로그래머스 > Level_2' 카테고리의 다른 글
[프로그래머스 / Level_2 / C++ ] 프린터 (0) | 2022.03.28 |
---|---|
[프로그래머스 / Level_2] 소수 찾기 (0) | 2022.03.26 |
[프로그래머스 Level_2 / C++ / 카카오] [3차] n진수 게임 (0) | 2022.02.18 |
[프로그래머스 Level_2 / C++ / 카카오] 방금그곡 (0) | 2022.02.17 |
[Level_2 / C++ / 카카오] 괄호 변환 (0) | 2022.01.29 |
댓글