프로그래머스_가장큰수 c++

hyoJeong·2021년 7월 7일
0

프로그래머스의 문제중 가장 큰수라는 문제를 풀어보았습니다.
문제링크 :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;
}

0개의 댓글