본문 바로가기

코딩 테스트/프로그래머스

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

728x90
반응형

문제 : 가장 큰 수


풀이 방법

처음에는 벡터를 하나 만들고 순열구하는 함수로 전부 넣은 다음 최대값을 비교하는 방법으로 풀었는데 테스트 케이스는 정답으로 나왔지만 제출할 때 시간초과라는 뭐같은 상황이 나와서 뭐 없나 생각하다가 그냥 숫자 앞뒤로 비교만 해도 되나 싶어서 해봤는데 정답으로 나와서 다행이었다 근데 11번 테스트 케이스에서 막혀서 질문하기를 봤는데 0일경우 0하나만 나와야한대서 그렇게 해주니 정답이었다 이번에 람다식 공부도 하고 재밌었다 


소스 코드

#include <string>
#include <vector>
#include <numeric>
#include <algorithm>
using namespace std;

string solution(vector<int> numbers) {
    vector<string> arr(numbers.size());
    
    // numbers벡터에서 arr벡터로 타입 변경하여 대입
    transform(numbers.begin(), numbers.end(), arr.begin(), [](int i) { return to_string(i); });
   	
    sort(arr.begin(), arr.end(), [](string a, string b) { return a+b > b+a; });
    
    // 벡터에서 string으로 바로 
    string answer = accumulate(arr.begin(), arr.end(), string{});
    
    return answer[0] == '0' ? "0" : answer;
}

 

728x90
반응형