코딩테스트 준비/프로그래머스

[프로그래머스] - 가장 큰 수(정렬) c++

SeoburiFaust 2024. 2. 14. 23:09

문제

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

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

접근방법

lamda이용해서 정렬했다. 잘 안되서 chatGPT에게 물어봤다.

근데 string 끼리 A + B > B + A 이런 식으로 비교하면 된다고 알려줬다.

 

string끼리 비교할 수 있는 지 몰랐고,

A +  B > B + A 아이디어가 좋았다.

 

처음 숫자가 0이 될 때 output이 0이 나와야하는데,

0000

이런 식으로 나와서 자꾸 실패가 떴다. 그래서 예외를 추가해줬다.

코드

#include <string>
#include <vector>
#include <algorithm>
#include <deque>
#include <iostream>
using namespace std;

string solution(vector<int> numbers) {
    string answer = "";
    sort(numbers.begin(), numbers.end(), [](int a, int b) {
        string A = to_string(a);
        string B = to_string(b);
        return A + B > B + A;
    });
    if (numbers[0] == 0) return "0";
    for (auto& t : numbers) {
        answer += to_string(t);
    }
    return answer;
}

개선할 점

..