프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

📄 문제

문자열 s가 매개변수로 주어집니다. s에서 한 번만 등장하는 문자를 사전 순으로 정렬한 문자열을 return 하도록 solution 함수를 완성해보세요. 한 번만 등장하는 문자가 없을 경우 빈 문자열을 return 합니다.

 

📝 풀이

#include <string>
#include <vector>
#include <cmath>
#include <algorithm>

using namespace std;

string solution(string s) {
    
    vector<pair<char, int>> characters;
    
    for(int i = 0; i < s.size(); ++i)
    {
        bool imported = false;
        for(int j = 0; j < characters.size(); ++j)
        {
            if(characters[j].first == s[i])
            {
                imported = true;
                ++characters[j].second;
            }
                
        }
        
        if(!imported)
            characters.push_back({s[i], 1});
    }
    
    string answer;
    for(int i = 0; i < characters.size(); ++i)
    {
        if(characters[i].second == 1)
            answer.push_back(characters[i].first);
    }
    
    sort(answer.begin(), answer.end());

    return answer;
}
  • pair<char, int>를 사용하여 각 문자가 몇번 사용되었는지 저장합니다.
  • 저장한 후 검사하여 한번만 사용된 글자를 answer에 삽입한 후 내림차순으로 정렬합니다.
bonnate