[프로그래머스 Lv2] 가장 큰 수

수민이슈·2023년 8월 2일
0

[C++] 코딩테스트

목록 보기
44/116
post-thumbnail

🖊️ 문제

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


🖊️ 풀이

문제 보면 누구나..
문자열을 정렬해서 푸는거구나 할 것 같긴 한데..
난 바보몽충이라서 여러 번 막혔다 ㅋㅋ

1번 : to_string
왜 자꾸 itos이런것만 쓰려고 하는거임?
c++의 string 관련 메소드들을 잘 알아두는게 좋을 것 같다.

2번 : 정렬 방법
사실 원소 내부가 최대 1000이라길래 각 자리수 별로 비교하려고 했는데,
이게
<3, 34> <3, 30> 비교 등.. 이게 완전 중노가다임
그래서 이걸 어쩌냐.. 한참 고민했는데 방법을 못찾았다
결국 서치했는데 더했을 때 더 큰 숫자가 나올 때 앞에 있는 애가 더 큰 거임
그래서 compare이 저렇게 됐다.
휴,..

3번 : 예외처리
나는 예외처리를 왜이렇게 못할까..
당연함
안해서 그래.
첫 번째 원소가 0인 경우 전체 string을 0으로 바꿔주지 않으면
00이 될 수도 있다.
멍충~

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

using namespace std;

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

string solution(vector<int> numbers) {
    string answer = "";
    vector<string> vec;
    for(auto& num : numbers) {
        vec.emplace_back(to_string(num));
    }
    sort(vec.begin(), vec.end(), compare);
    
    for(auto& v : vec) {
        answer += v;
    }
    
    if (answer[0] == '0')
        answer = '0';
    
    return answer;
}

0개의 댓글