728x90
https://www.acmicpc.net/problem/1431
풀이
기초적인 정렬 문제로 문자를 비교하여 정렬하는 방식을 사용합니다. 이전에 진행한 알고리즘 라이브러리의 sort 함수를 사용하여 풀이를 진행합니다.
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int num(char k) {
if (k == '0') return 0;
if (k == '1') return 1;
if (k == '2') return 2;
if (k == '3') return 3;
if (k == '4') return 4;
if (k == '5') return 5;
if (k == '6') return 6;
if (k == '7') return 7;
if (k == '8') return 8;
if (k == '9') return 9;
else
return 0;
}
bool compare(pair<int, string> a, pair<int, string> b) {
if (a.second.size() == b.second.size()) {
if (a.first == b.first)
return a.second < b.second;// 문자열은 사전식으로 직접 비교가능!!!
else
return a.first < b.first;
}
else
return a.second.size() < b.second.size();
}
int main() {
vector<pair<int, string>>v;
string k;
int N;
ios_base::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
cin >> N;
for (int i = 0; i < N; i++) {
cin >> k;
int sum = 0;
for (int i = 0; i < k.size(); i++)
sum += num(k[i]);
v.push_back(make_pair(sum, k));
}
sort(v.begin(), v.end(), compare);
for (auto elem : v)
cout << elem.second << '\n';
return 0;
}
728x90
'🥇Baekjoon Solutions > 정렬' 카테고리의 다른 글
[C++] 백준 1920번: 수 찾기 (0) | 2021.09.24 |
---|---|
[C++] 백준 2108번: 통계학 (0) | 2021.08.19 |
[C++] 백준 1181번: 단어 정렬 (0) | 2021.08.19 |
댓글