[프로그래머스 문제풀이] 16. 가장 큰 수

WIGWAG·2023년 1월 3일
0

프로그래머스

목록 보기
16/32

람다로 조건을 설정하여 정렬하면 짧은 코드로 쉽게 해결할 수 있다.
문제 상황에서는 인접한 숫자끼리 이어붙였을 때 더 큰 수가 되도록 정렬해야 한다.

sort(numbers.begin(), numbers.end(), [](int a, int b) {
    string str_a = to_string(a);
    string str_b = to_string(b);

    return str_a + str_b > str_b + str_a;
    });

여기서 리턴 값이 참이면 ab 순이 되고 거짓이면 ba 순이 된다.


#include <string>
#include <vector>
#include <algorithm>

#include <iostream>

using namespace std;

string solution(vector<int> numbers) {
    sort(numbers.begin(), numbers.end(), [](int a, int b) {
        string str_a = to_string(a);
        string str_b = to_string(b);

        return str_a + str_b > str_b + str_a;
        //조건에 맞으면 앞에 둔다.
        });

    string answer = "";
    for (auto& s : numbers)
    {
        answer += to_string(s);
    }

    if (answer[0] == '0')
        return "0";

    return answer;
}

int main()
{
    cout << solution({ 6, 10, 2 }) << endl;
}

실행결과

6210


가장 큰 수 문제 풀이

profile
윅왁의 프로그래밍 개발노트

0개의 댓글