본문 바로가기
Algorithm/programmers

[프로그래머스] 가장 큰 수 (C++)

by shine-jung 2021. 8. 3.
반응형

문제 링크

 

코딩하기 전 생각하기

/*
숫자를 이어 붙인 값을 비교하기 위해 숫자 벡터를 문자열 벡터로 변환한다.
comp 함수를 선언한다.
    두 숫자를 그대로 붙여본 것과 순서를 바꿔서 붙여본 것을 비교한다.
    다른 숫자와 비교했을 때 더 큰 값이 만들어지는 숫자를 앞으로 오게한다.
sort 함수로 벡터를 정렬한다.
벡터를 문자열로 변환하고 문자열을 반환한다.
*/

 


 

코드

#include <bits/stdc++.h>
using namespace std;

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

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

 


 

느낀점

 

배열에 0만 여러 개 있는 경우를 예외처리하지 않아서 테스트 11에서 실패가 나왔다. 0000과 같은 숫자는 0으로 바꿔줘야 한다.

이런 종류의 TC는 쉽게 생각이 안 나는 것 같다.

 

(주의) 기록용으로 작성한 글입니다. 코드가 허접하거나 알고리즘의 효율이 낮을 수 있습니다.

댓글 환영합니다!

반응형

댓글