포스트

[ 프로그래머스 ] 가장 큰 수

문제


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

풀이


0 또는 양의 정수가 주어졌을 때, 정수를 이어 붙여 만들 수 있는 가장 큰 수를 찾는 문제로, 두 수를 이어 붙였을 때 더 큰 수 나오도록 sort하여 최댓값을 return한다.

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
35
36
37
#include <string>
#include <vector>
#include <algorithm>

using namespace std;

bool isChange(string s1, string s2)
{

    return s1 + s2 > s2 + s1;
}

string solution(vector<int> numbers) 
{
    string answer = "";

    vector<string> v;

    for (int i = 0; i < numbers.size(); i++)
    {
        v.push_back(to_string(numbers[i]));
    }

    sort(v.begin(),v.end(), isChange);
    
    if (v.at(0) == "0")
    {
        return "0";
    }

    for (int i = 0; i < v.size(); i++)
    {
        answer += v[i];
    }
    return answer;
}

이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.