Algorithm/프로그래머스

[프로그래머스/level1/c++] 문자열 내림차순으로 배치하기

호_두씨 2021. 1. 7. 22:06

내용 :

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

 

제한사항 :

  • str은 길이 1 이상인 문자열입니다.

입출력 예 :

s return
Zbcdefg gfedcbZ

 

코드 :

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

using namespace std;
bool compare(char a,char b){
    return a>b;
}
string solution(string s) {
    /*vector 이용
    vector<char> c(s.begin(),s.end());
    sort(c.begin(),c.end(),compare);
    string answer(c.begin(),c.end());
    */
    string answer=s;
    sort(answer.begin(),answer.end(),compare);
    return answer;
}

 

다시 한번 짚고 넘어가기 :

-string to vector char

 vector<char> ch(str.begin(),str.end());

 

-vector char to string

 string str(ch.begin(),ch.end());

 

-다른 답

sort(ch.begin(),ch.end(),greater<char>());  //내림차순

sort(ch.begin(),ch.end(),less<char>()); //오름차순

 

 

도움이 된 글 :

stackoverflow.com/questions/8263926/how-to-copy-stdstring-into-stdvectorchar

 

How to copy std::string into std::vector?

Possible Duplicate: Converting std::string to std::vector I tried: std::string str = "hello"; std::vector data; std::copy(str.c_str(), str.c_str()+str.length(), data);...

stackoverflow.com