Algorithm/Programmers
[Algorithm] Programmers :: 가장 큰 수
MaxLevel
2022. 5. 26. 03:22
https://programmers.co.kr/learn/courses/30/lessons/42746?language=cpp
코딩테스트 연습 - 가장 큰 수
0 또는 양의 정수가 주어졌을 때, 정수를 이어 붙여 만들 수 있는 가장 큰 수를 알아내 주세요. 예를 들어, 주어진 정수가 [6, 10, 2]라면 [6102, 6210, 1062, 1026, 2610, 2106]를 만들 수 있고, 이중 가장 큰
programmers.co.kr
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
bool cmp(string& p1, string& p2)
{
if (p1 + p2 > p2 + p1)
{
return true;
}
return false;
}
string solution(vector<int> numbers) {
string answer = "";
vector<string> stringNumbers;
for (int i = 0; i < numbers.size(); i++)
{
stringNumbers.push_back(to_string(numbers[i])); // toString 해서 stringNumbers에 저장.
}
sort(stringNumbers.begin(), stringNumbers.end(), cmp);
for (int i = 0; i < stringNumbers.size(); i++)
{
answer += stringNumbers[i];
}
if(answer[0] == '0')
{
return "0";
}
return answer;
}
|
cs |
이 문제에서 알아가야 할 점은, comp함수를 적절하게 사용하는 법이다. 코드를 보면 알겠지만 저렇게 작성하고 sort를 실행하면, 알아서 정렬을 해준다. sort함수에 따로 비교함수를 작성해본 사람은 cmp함수를 보면 바로 알듯하다.