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;
}
댓글 0