오늘 프로그래머스 2레벨 테스트볼때 나온 문제
https://programmers.co.kr/learn/courses/30/lessons/17684?language=cpp
코딩테스트 연습 - [3차] 압축
TOBEORNOTTOBEORTOBEORNOT [20, 15, 2, 5, 15, 18, 14, 15, 20, 27, 29, 31, 36, 30, 32, 34]
programmers.co.kr
고민하다가 map을 사용해야겠다는 생각이 들어서 사용했다.
먼저 map에 A~Z까지 색인 번호를 등록시켜주었고,
문자열을 넣을때마다 Map에 등록이 되있는지 탐색을 했다.
만약 들어가있다면 다시 문자열을 추가해서 탐색을 하였고,
만약 Map에 등록이 되어있지 않다면 색인 번호와 문자열을 Map에 넣어주고
string의 맨 끝자리를 빼주고 색인번호를 찾았다.
이전까지는 확실히 등록이 되있기때문에 가져와서 answer에 넣어주고 다시 처음부터 돌려주었다.
만약 마지막에 string값이 남아있다면 찾아서 answer에 넣어주고 리턴을 해주었다.
순서를 제대로 못짜서 순서고민하는데 10분 걸려서 총 20분 걸렸다.
#include <string>
#include <vector>
#include <map>
using namespace std;
map<string, int> m_map;
vector<int> solution(string msg) {
vector<int> answer;
for (int i = 1; i < 27; ++i)
{
string str="";
char c = 'A' + i - 1;
str =str+ c + "";
m_map.insert({ str, i });
}
int cnt = 27;
string str="";
for (int i = 0; i < msg.size(); ++i)
{
str = str+msg[i] + "";
auto iter = m_map.find(str);
if (iter != m_map.end())
{
}
else
{
m_map.insert({ str, cnt });
cnt++;
str.pop_back();
answer.push_back(m_map.find(str)->second);
str = "";
i--;
}
}
if (str != "")
{
answer.push_back(m_map.find(str)->second);
}
return answer;
}
int main()
{
string str = "KAKAO";
solution(str);
}'알고리즘' 카테고리의 다른 글
| 백준 1201 NMK C++ (0) | 2021.09.09 |
|---|---|
| 16954 움직이는 미로 탈출 C++ DFS deque (0) | 2021.09.05 |
| 4256 트리 (0) | 2021.08.21 |
| 6416 백준 트리인가? (0) | 2021.08.20 |
| 21939 백준 (0) | 2021.08.18 |