반응형
#include <bits/stdc++.h>
using namespace std;
// 시리얼 번호
bool cmp(string str1, string str2) {
if (str1.length() != str2.length()) { // 길이가 같을 때
if (str1.length() < str2.length()) return true;
return false;
}
else { // 길이가 같지 않을 때
int sum1 = 0; // 숫자만
int sum2 = 0; // 숫자만
for (char a : str1) {// 숫자만 더함
if (a >= '0' && a <= '9') {
sum1 += (a - '0');
}
}
for (char b : str2) { // 숫자만 더함
if (b >= '0' && b <= '9') {
sum2 += (b - '0');
}
}
if (sum1 == sum2) // 합이 같을 때
return str1 < str2; // 사전 순
else
return sum1 < sum2;
}
return str1 < str2;
}
int main() {
ios::sync_with_stdio(0);
cin.tie(0);
int n;
vector<string> v;
cin >> n;
for (int i = 0; i < n; i++) {
string str;
cin >> str;
v.push_back(str);
}
sort(v.begin(), v.end(), cmp);
for (int i = 0; i < n; i++) {
cout << v[i] << '\n';
}
}
반응형
'Algorithm > BOJ [C++]' 카테고리의 다른 글
| [BOJ] 5648. 역원소 정렬 - C++ (2) | 2025.07.27 |
|---|---|
| [BOJ] 10989. 수 정렬하기 3 - C++ (0) | 2025.07.26 |
| [BOJ] 11728. 배열합치기 - C++ (0) | 2025.07.15 |
| [BOJ] 1259. 팰린드롬수 - C++ (0) | 2025.06.28 |
| [BOJ] 2267. 단지번호붙이기 - C++ (1) | 2025.06.19 |