2023. 10. 31. 16:09, 알고리즘/프로그래머스
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()의 결과물이 어떻게 나오게 되는지에 대해 예상해볼 수 있을 것이다.
물론 위와 같이 실질적으로 이루어지는것은 아니고, 결과물에 대한 예상을 하기에 적당한 치환 암기 방법일 뿐이다.
'알고리즘 > 프로그래머스' 카테고리의 다른 글
프로그래머스 lv 1. 86491 c++ 최소직사각형 (0) | 2023.11.01 |
---|---|
프로그래머스 lv 2. 42747 c++ H-index (0) | 2023.10.31 |
프로그래머스 lv 1. 42748 c++ K번째수 (0) | 2023.10.31 |
프로그래머스 lv 2. 42583 c++ 다리를 지나는 트럭 **다시 풀어보기** (0) | 2023.10.30 |
프로그래머스 Lv 2. 42587 c++ 프로세스 (0) | 2023.10.28 |
Comments, Trackbacks