난이도: 하?
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
vector<int> solution(string msg) {
vector<int> answer;
vector<string> dict;
//1번부터 시작하기 위해 더미값 삽입
dict.push_back("");
//A~Z 알파벳 삽입
for(int i = 0; i < 26; i++) {
char alphabet_c = char('A' + i);
string alphabet_s = "";
alphabet_s = alphabet_s + alphabet_c;
dict.push_back(alphabet_s);
}
//position은 사전 위치를 저장
int position;
bool flag = false;
string check_str, msg_str, add_str;
for (int i = 0; i < msg.length(); i++) {
position = 0;
check_str = "", msg_str = "", add_str = "";
flag = false;
while(!flag && i < msg.length()) {
msg_str = msg_str + msg[i];
flag = true;
for(int u = 0; u < dict.size(); u++) {
//msg_str과 같은 문자열을 찾아서 사전에 존재하는지 확인하고,
//존재한다면 position 값 갱신
//존재하지 않는다면 while 문을 빠져나온다.
if(msg_str == check_str + dict[u]) {
for(int k = 0; k < dict.size(); k++) {
if(dict[k] == msg_str) {
position = k;
i++;
flag = false;
}
}
check_str = msg_str;
break;
}
}
}
answer.push_back(position);
//i를 증가시키지 않았을 때
if(msg_str.length() > 1) {
i--;
}
//사전에 현재 입력이 존재하지 않는다면 추가
for(int j = 0; j < dict.size(); j++) {
if(dict[j] == check_str) {
break;
}
if(j == dict.size() - 1) {
dict.push_back(check_str);
}
}
}
// for(int j = 0; j < dict.size(); j++) {
// cout << dict[j] << "\n";
// }
return answer;
}
|
cs |
'problem solving' 카테고리의 다른 글
[프로그래머스]N진수 게임 (0) | 2020.07.14 |
---|---|
[프로그래머스]파일명 정렬 (0) | 2020.07.13 |
[프로그래머스]방금그곡 (0) | 2020.07.11 |
[ 프로그래머스]다음 큰 숫자 (0) | 2020.03.28 |
[프로그래머스]단체사진 찍기 (0) | 2020.03.28 |