문자열 - 문자열 내림차순으로 배치하기

Updated:

C++

문자열 - 문자열 내림차순으로 배치하기

문제

문자열 s에 나타나는 문자를 큰것부터 작은 순으로 정렬해 새로운 문자열을 리턴하는 함수, solution을 완성해주세요.
s는 영문 대소문자로만 구성되어 있으며, 대문자는 소문자보다 작은 것으로 간주합니다.

문제 출처

접근 방법

  1. 문자열의 모든 문자를 vector에 넣는다.
  2. 문자를 내림 차순으로 정렬한다.
  3. 정렬한 문자들을 문자열로 만들어 준다.

이게 가능한 이유는, 문자는 아스키 코드인 int로 변환이 가능 하므로 sort로 정렬이 가능하다.

코드

#include <string>
#include <vector>
#include <iostream>

using namespace std;

bool Comp(int a, int b) {               //내림 차순을 위한 함수
    return a > b;   
}

string solution(string s) {
    string answer = "";
    vector<char> vc;
    for (int i = 0; i < s.length(); i++)
        vc.push_back(s[i]);

    sort(vc.begin(), vc.end(), Comp);   //내림 차순으로 문자들을 정렬한다.

    for (int i = 0; i < s.length(); i++)
        answer = answer + vc.at(i);

    return answer;

}

int main() {
    string val = solution("Zbcdefg");
	cout << val;
    
	return 0;
}

후기 및 개선할 점

5분.