bdfgdfg

[레벨 1] 문자열 내림차순으로 배치하기 본문

코딩테스트/프로그래머스

[레벨 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;
}
반응형
Comments