문제링크 : https://www.acmicpc.net/problem/1755
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef pair<int, int> pii;
const int MAX = INT_MAX;
int N, M;
string s, arr[11] = { "zero" ,"one" ,"two" ,"three" ,"four" ,"five" ,"six" ,"seven" ,"eight" ,"nine" };
map<string, int>m; //Key 기준 오름차순 정렬
int main()
{
ios_base::sync_with_stdio(0);
cin.tie(0);
cin >> N >> M;
for(int i=N; i<=M; i++)
{
if(i>9)
{
s = arr[i/10] + " " + arr[i%10]; //2글자
m[s] = i;
}
else
{
s = arr[i%10]; //1글자
m[s]=i;
}
}
int cnt = 0;
for(auto i : m)
{
cout << i.second << " ";
if(cnt%10==9) cout << "\n";
cnt++;
}
return 0;
}
먼저 0~9까지에 대해 문자열로 선언된 배열을 만들어준다.
이를 기준으로 입력받은 범위 내에 속한 숫자를 2글자인 경우와 1글자인 경우를 주의하여 문자열로 바꿔준다.
이후 해당 문자열 Key로 현재 i 값을 Value로 삼아준다.
map의 경우 Key를 기준으로 오름차순 정렬하기에, 문제에서 원하는 문자열 기준 사전 순으로 정렬하게 된다.
따라서 현재 map에 담긴 Value들을 순서대로 출력하되, 10번째 마다 줄바꿈을 해서 출력해주면 된다.
'백준 > 실버' 카테고리의 다른 글
[백준 1448번] 삼각형 만들기 (C++) (0) | 2024.04.07 |
---|---|
[백준 20291번] 파일 정리 (C++) (0) | 2024.04.06 |
[백준 1822번] 차집합 (C++) (0) | 2024.04.04 |
[백준 15688번] 수 정렬하기 5 (C++) (0) | 2024.04.03 |
[백준 5635번] 생일 (C++) (0) | 2024.04.02 |