이번 문제는 문자열을 주어진 우선순위에 따라 정렬시켜 해결하는 문제였다. 본인은 C++의 표준 라이브러리 중 sort함수를 사용하였다.
#include <iostream>
#include <string>
#include <algorithm>
#define MAX 1001
using namespace std;
int n;
string serial[MAX];
void Input(){
cin>>n;
for(int i=0; i<n; i++){
cin>>serial[i];
}
}
bool compare(string a, string b){
if(a.length()<b.length())
return true;
else if(a.length()==b.length()){
int asum=0;
int bsum=0;
for(int i=0; i<=a.length(); i++){
if(a[i]>=48&&a[i]<=57){
asum+=int(a[i]-'0');
}
if(b[i]>=48&&b[i]<=57){
bsum+=int(b[i]-'0');
}
}
if(asum<bsum)
return true;
else if(asum>bsum)
return false;
else{
if(a<b)
return true;
return false;
}
}
else{
return false;
}
}
void Solution(){
sort(serial, serial+n, compare);
for(int i=0; i<n; i++){
cout<<serial[i]<<endl;
}
}
int main(){
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
Input();
Solution();
return 0;
}