#include <iostream>
#include <iomanip>
#include <string>
#include <vector>
#include <numeric>
#include <math.h>
#include <algorithm>
#include <functional>
using namespace std;
string arr[] = {"zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine"};
bool compare(const string& a, const string& b) {
for(int i = 0; i < min(a.length(), b.length()); i++) {
if(a[i] == b[i]) continue;
return arr[a[i] - '0'] < arr[b[i] - '0'];
}
}
int main() {
int N, M;
cin >> N >> M;
vector<string> arr;
for(int i = N; i <= M; i++)
arr.push_back(to_string(i));
sort(arr.begin(), arr.end(), compare);
for(int i = 0; i < arr.size(); i++) {
cout << arr[i];
(i + 1) % 10 == 0 ? cout << "\n" : cout << " ";
}
}
숫자를 문자로 받아서 그 문자끼리 비교하는 것이 아니라 compare 함수에서 전역변수로 지정한 알파벳 문자열 배열을 비교하도록 하여 모든 문자를 비교하도록 하였습니다.
문제: https://www.acmicpc.net/problem/1755
'Problem Solving > 백준' 카테고리의 다른 글
[백준/C++] 24268번 2022는 무엇이 특별할까? (0) | 2022.02.15 |
---|---|
[백준/C++] 2941번 크로아티아 알파벳 (0) | 2022.02.10 |
[백준/C++] 1431번 시리얼 번호 (0) | 2022.02.10 |
[백준/C++] 11656번 접미사 배열 (0) | 2022.02.10 |
[백준/C++] 10867번 중복 빼고 정렬하기 (0) | 2022.02.10 |