Game Develop

[Algorithm] Programmers :: 가장 큰 수 본문

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함수를 보면 바로 알듯하다.