https://www.acmicpc.net/problem/2385

Baekjoon Online JudgeBaekjoon Online Judgewww.acmicpc.net



숫자 문자열로 받은 다음에 문자열 a, b에 대해 a+b랑 b+a 비교하는 함수로 정렬했음

정렬하면 앞에는 0으로 시작하는 문자열일텐데 처음으로 0이 아닌 문자로 시작하는 칸 찾아서 pt에 저장했고,

pt == N이면 불가능한거 처리 했음

그리고 S[pt] 출력하고 나머지 문자열 순서대로 출력했고


근데 왜 틀림?

아래는 코드 



#include <iostream>

#include <string>

#include <vector>

#include <algorithm>


using namespace std;


bool cmp(string a, string b)

{

return a+b < b+a;

}


int main(void){

ios::sync_with_stdio(false);

cin.tie(NULL);

int N, pt=0;

vector<string> S;

string text;

cin >> N;

for(int i = 0; i < N; i++){

cin >> text;

S.push_back(text);

}

sort(S.begin(), S.end(), cmp);

while(pt < N){

if(S[pt][0] != '0'){

break;

}

pt++;

}

if(pt == N){

cout << "INVALID" << endl;

}

else{

cout << S[pt];

for(int i=0; i < N; i++){

if(i == pt) continue;

cout << S[i];

}

cout << endl;

}

return 0;

}