코딩테스트/프로그래머스
[레벨 1] 문자열 내림차순으로 배치하기
marmelo12
2021. 9. 5. 12:46
반응형
#include <string>
#include <algorithm>
#include <vector>
using namespace std;
string solution(string s) {
sort(s.begin(),s.end(),greater<char>());
return s;
}
greater는 내림차순. less는 오름차순.
다른 사람의 풀이중 람다를 사용한 풀이를 보았는데. 저런식으로. 함수 포인터(함수 객체등)를 만드는 연습을 해야겠다.
sort(s.begin(),s.end(),[](const char& lhs, const char& rhs)
{
return lhs>rhs;
});
위의 방법을 응용한 람다가아닌 함수 객체
struct boo
{
bool operator()(const char& lhs, const char& rhs)
{
return lhs > rhs;
}
};
string solution(string s) {
string answer = "";
sort(s.begin(), s.end(),boo());
return s;
}
int main(void)
{
string a = solution("Zbcdefg");
cout << a;
return 0;
}
함수포인터로 넘기기. 함수 그자체를 넘기거나, 함수 포인터로 넘기거나
bool (*ptr)(const char& lhs, const char& rhs);
bool Compare(const char& lhs, const char& rhs)
{
return lhs > rhs;
}
string solution(string s) {
string answer = "";
ptr = Compare; // 등록
sort(s.begin(), s.end(), ptr); // 혹은 Compare.
return s;
}
int main(void)
{
string a = solution("Zbcdefg");
cout << a;
return 0;
}
반응형