프로그래머스의 문제중 가장 큰수라는 문제를 풀어보았습니다.
문제링크 :https://programmers.co.kr/learn/courses/30/lessons/42746#
생각한 아이디어: number의 크기만큼 벡터에 값을 string형으로 저장해, 새로 정의한 함수를 기준으로 정렬해 풀면 됩니다.
처음에 마지막 테스트 케이스가 계속 틀렸다고 나와, 프로그래머스에서 질문하기에 글들을 찾아보던 중 왜 틀렸는지 알게 되었습니다.
코드를 보면 v[0]="0"일때는 answer="0" 이렇게 따로 정의를 해주었는데,
이 부분을 정의하지 않았을 경우 number이 {0.0.0}이런식으로 들어가 있을경우 answer=000이렇게 되기 때문입니다.
따라서 if문으로 v[0]="0"일때 answer="0" 으로 따로 처리해 주어야 합니다.
역시 항상 반례를 찾기 어려운거 같습니다.. ㅠ
플이코드:
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
bool cmp(string &a,string &b){
return a+b>b+a;
}
string solution(vector<int> numbers) {
string answer = "";
answer="";
vector<string>v;
for(int i=0;i<numbers.size();i++){
v.push_back(to_string(numbers[i]));
}
sort(v.begin(), v.end(),cmp);
if(v[0]=="0"){
answer="0";
}else{
for(int i=0;i<numbers.size();i++){
answer+=v[i];
}
}
return answer;
}