[C++] 프로그래머스 Level 2 : 가장 큰 수

Kim Nahyeong·2022년 9월 14일
0

프로그래머스

목록 보기
21/38

#include <iostream>
#include <string>
#include <vector>
#include <algorithm> // sort

using namespace std;

vector<string> n;

bool compare(string &a, string &b){
    return a + b > b + a;
}

string solution(vector<int> numbers) {
    string answer = "";
    
    for(int i = 0; i < numbers.size(); i++){
        n.push_back(to_string(numbers[i]));
    }
    
    sort(n.begin(), n.end(), compare);
    
    for(int i = 0; i < n.size(); i++){
        answer += n[i];
    }
    
    if(answer[0] == '0'){
        answer = "0";
    }
    
    return answer;
}

인터넷 많이 참고해서 풀었다. 아무리 생각해도 모든 경우를 다 비교하는 것은 너무 효율성이 떨어지고 하나하나 자릿수를 다 비교하기에도 너무 아닌 것 같았기 떄문이다. 사람들은 똑똑하다... 어떻게 수 string 2개를 더해서 그것을 비교할 생각을 했는지
너무 꽉 막힌 생각을 하고 사는 것 같다. 생각보다 시키는대로만 하면 쉽게 풀 수 있었을지도

주의

  • numbers의 값은 0이 올 수 있다. 때문에 만약 answer의 첫 값이 0이면 해당 값은 0이므로 answer 값을 0으로 만들어주어야한다.

0개의 댓글