알고리즘 부셔버렷/ProblemSolving

[프로그래머스] 가장 큰 수 (문제 설명, 해결 과정, 코드 전문, c++)

Unagi_zoso 2022. 6. 9. 18:54

 

  문제 설명

 

 

본 문제는 프로그래머스의 가장 큰 수 문제이다.

 

 

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

 

 

 

 

 

  해결 과정

 

 

본 문제를 그냥 정수로 해결할 시 상당히 큰 범위의 수가 나올 수 있어 문자열로써 다루었습니다.

본 문제를 정렬하기 앞서 그냥 주어지는 정렬함수의 조건으로는 해당 문제를 풀 수 없어

사용자정의 조건을 만들었습니다. 

그 조건은 비교하는 숫자문자들끼리 서로 덧붙혀  더 큰 숫자가 나오는 경우를 앞쪽에 정렬하는 것 입니다.

이렇게 정렬된 문자배열을 앞에서부터 덧붙혀 반환하면 정답입니다.

 

 

 

 

  코드 전문

 

 

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

using namespace std;

string solution(vector<int> numbers) {
    string answer = "";
    vector<string> str_nums;
    int sum = 0;
    for (auto n : numbers)
    {
        str_nums.emplace_back(to_string(n));
        sum += n;
    }
    if (sum == 0) return "0";
    
    sort(str_nums.begin(), str_nums.end(), [] (string s1, string s2) -> bool
                                           { return (s1 + s2) > (s2 + s1); });
    for (auto num : str_nums)
        answer += num;
    
    return answer;
}

 

 

 

 

  느낀 점 (잡설 99% , 배운점 1%(많은 편))

 

 

더보기

머리가 좀 더 말랑말랑해질 수 있게 노력하겠습니다.

 

 

 

 

 

 

 

긴 글 읽어주셔서 감사합니다. 

부족한 점이 있다면 부디 알려주시면 감사하겠습니다.