프로그래머스 lv 2. 42746 c++ 가장 큰 수

https://school.programmers.co.kr/learn/courses/30/lessons/42746

#include <bits/stdc++.h>

using namespace std;

bool cmp(string &a, string &b) { 
	return a + b > b + a;
}

string solution(vector<int> numbers) {
	string answer = "";
	vector<string> tmp;
    
	for (auto t : numbers) tmp.push_back(to_string(t));
	sort(tmp.begin(), tmp.end(), cmp);
    
	for (auto t: tmp) answer += t; 
	if (answer[0] == '0') return "0";
	return answer;
}

sort() 함수에 전달할 cmp 함수를 만들때 return a>b; 형태처럼 개별 원소로 대소비교를 해서 반환해줄 필요가 없다는걸 이해하고 작성하도록 하자.

 

앞에 넣는 인자가 더 앞에 놓일 인자, 뒤에 놓일 인자가 더 뒤에 놓일 인자라고 생각하고 return 값이 true가 되는 형태로 결과물이 나온다고 생각하면 sort()의 결과물이 어떻게 나오게 되는지에 대해 예상해볼 수 있을 것이다. 

물론 위와 같이 실질적으로 이루어지는것은 아니고, 결과물에 대한 예상을 하기에 적당한 치환 암기 방법일 뿐이다. 

 

 

  Comments,     Trackbacks