이 포스팅은 Algorithm Problem Solving 시리즈 113 편 중 41 번째 글 입니다.
목차
실버3 : 정렬 문제이다.
생각
문제에서 하라는 대로 비교만 하면 된다.
Code
// 실버3 : 백준 1431번 시리얼 번호
#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
int N = 0;
string arr[1002];
bool compare(string a, string b){
int sizeA = int(a.size()), sizeB = int(b.size());
if (sizeA > sizeB) return false;
else if (sizeA < sizeB) return true;
else {
int sumA = 0, sumB = 0;
for (int i = 0; i < sizeA; i++) {
if (0 <= a[i]-'0' && a[i]-'0' <= 9) sumA += a[i]-'0';
}
for (int i = 0; i < sizeA; i++) {
if (0 <= b[i]-'0' && b[i]-'0' <= 9) sumB += b[i]-'0';
}
if (sumA < sumB) return true;
else if (sumA > sumB) return false;
else {
return a < b;
}
}
}
int main(){
ios_base::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
cin >> N;
for (int i = 0; i < N; i++) {
cin >> arr[i];
}
sort(&arr[0], &arr[N], compare);
for (int i = 0; i < N; i++) {
cout << arr[i] << '\n';
}
return 0;
}