[코딩테스트] [프로그래머스] 가장 큰 수

김민정·2025년 9월 17일

코딩테스트

목록 보기
18/33
post-thumbnail

문제

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


풀이

  1. algorithm 헤더의 sort 함수에 compare 인자를 커스텀해서 넣어준다.
    1-1. 문자열끼리 더해서 더 큰 문자열이 앞에 오도록 정렬해준다. 이때, compare 인자는 객체를 생성해서 전달해주어야 한다.
    1-2. 아래 코드의 경우, 익명 구조체를 생성한 뒤 () 연산자로 함수 객체를 생성하여 compare 인자에 넣는 방식을 사용하였다.

  2. 1에서 정렬한 뒤, 더 큰 문자열이 앞에 있기 때문에 순서대로 string에 이어붙인다.


코드

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

using namespace std;

struct 
{
    bool operator()(string a, string b) const {return a+b > b+a;}
} 
compareString;


string solution(vector<int> numbers) 
{
    vector<string> numbers_string;
    for(int i : numbers)
    {
        string newNumber = to_string(i);
        numbers_string.push_back(newNumber);
    }
    
    sort(numbers_string.begin(), numbers_string.end(), compareString);
    
    if(numbers_string[0] == "0")
    {
        return "0";
    }
    
    string answer;
    for(string s : numbers_string)
    {
        answer += s;
    }
    
    return answer;
}
profile
📝 공부노트

0개의 댓글