프로그래머스/lv2

프로그래머스 : 가장 큰 수(lv2) C++

TIN9 2022. 10. 20.
반응형

프로그래머스 링크

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

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr


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

using namespace std;

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

string solution(vector<int> numbers) {
    string answer = "";
    
    vector<string> vecString;
    
    size_t Size = numbers.size();
    
    // 벡터에 담겨있는 인트를 전부 스트링으로 변환후 저장
    for(size_t i = 0; i < Size; ++i)
    {
        vecString.push_back(to_string(numbers[i]));
    }
    
    // a, b를 비교한다 가정할때 a = 10, b = 3;
    // a + b = 103이고 b + a = 310이기때문에 더한값을 비교해서 큰값이 앞으로오게 순차적으로 바꾼다.
    sort(vecString.begin(), vecString.end(), Function);
    
    Size = vecString.size();
    
    // 구한값을 전부 더하면 됨
    // Size는 무조건 밖에서 처리해주고 반복문 조건으로 넣기
    // 계속해서 처리해줄 필요가 없음
    for (size_t i = 0; i < Size; ++i)
    {
        answer += vecString[i];
    }
    
    // '0' + '0'을하게되면 "00"이란 값이 나오게 되기때문에 인덱스0값이 0이라면 무조건 0을 출력하도록 함
    if(answer[0] == '0')
    {
        answer = '0';
    }
    
    return answer;
}
반응형

댓글