자료구조 & 알고리즘/프로그래머스

Level 0. 문자열 잘라서 정렬하기

diesuki4 2023. 5. 22. 08:02
Level 0. 문자열 잘라서 정렬하기

 

 

굉장히 기초적인 파싱 문제인데 이 문제 때문에 하루를 꼬박 썼다..

 

분명 알고리즘엔 문제가 없는데 도대체 왜 안 될까 생각하며 다른 파싱 기법도 써봤는데 계속 안 됐다.

 

결국은 set이 문제였다는 걸 깨달았다..

set이 중복을 허용하지 않는다는 걸 깜빡하고 있었다..

 

#include <iostream>
#include <vector>
#include <set>

using namespace std;

vector<string> solution(string myString)
{
    multiset<string> mset;
    size_t last = 0;

    do
    {
        size_t first = myString.find_first_not_of('x', last);
        last = myString.find('x', first);

        if (first != string::npos)
            mset.emplace(myString.substr(first, last - first));
    }
    while (last != string::npos);

    return vector<string>(mset.begin(), mset.end());
}