#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
1755번: 숫자놀이
79를 영어로 읽되 숫자 단위로 하나씩 읽는다면 "seven nine"이 된다. 80은 마찬가지로 "eight zero"라고 읽는다. 79는 80보다 작지만, 영어로 숫자 하나씩 읽는다면 "eight zero"가 "seven nine"보다 사전순으로
www.acmicpc.net
'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 |