문제

https://programmers.co.kr/learn/courses/30/lessons/12917

풀이

  • 입력받은 문자열을 내림차순으로 정렬하면 되는 문제
  • algorithm의 sort를 이용해서 내림차순으로 정렬해서 해결 가능
    • algorithm의 sort는 기본적으로 오름차순으로 정렬을 시켜준다.
      • void sort(T start, T end, Compare comp)
      • sort메서드의 3번째 인자를 넣지 않으면 default로 오름차순 정렬
      • 3번째 인자에 사용자가 정의한 함수를 기준으로 정렬 가능
        • vodi(v.begin(),v.end(),greater<자료형>())
    • functional를 include하면 less,greater,plus,minus를 사용할 수 있다.
      • greater : 첫 번째 인자가 두 번째 인자보다 크면 true
      • less : 첫 번째 인자가 두 번째 이낮보다 작으면 true
      • plus : 두 개의 인자를 더한 값 반환
      • minus : 첫번째 인자에서 두 번째 인자를 뺀 값 반환
  • 정렬알고리즘을 직접 구현해서 해결 가능

코드

  • C++ sort 사용
#include <string>
#include <vector>
#include <algorithm>
#include <functional>
using namespace std;

string solution(string s) {
    sort (s.begin(), s.end(), greater<char>());
    return s;

}
  • 정렬 직접 구현

#include <string>
#include <vector>

using namespace std;

string solution(string s) {
    int i,j,r;
    for(i=0;i<s.size()-1;i++){
        for(j=i+1;j<s.size();j++){
            if(s[i]<s[j]){
                r=s[i];
                s[i]=s[j];
                s[j]=r;
            }
        }
    }
     string answer = s ;
    return answer;
}