문제: icpc.me/1755
m과 n 이 주어질 때 m부터 n까지의 사이의 수들을 숫자 하나당 영어로 표현하였을 때 정렬된 순서대로 숫자를 출력하면 된다.
map을 이용하여 string 정렬해주면 해결해줄 수 있다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 | #include <cstdio> #include <algorithm> #include <map> #include <string> #include <stack> using namespace std; map<string, int> res; map<int, string> cvt; int m, n, c; int main() { scanf("%d%d", &m, &n); cvt[0] = "zero "; cvt[1] = "one "; cvt[2] = "two "; cvt[3] = "three "; cvt[4] = "four "; cvt[5] = "five "; cvt[6] = "six "; cvt[7] = "seven "; cvt[8] = "eight "; cvt[9] = "nine "; for (int i = m; i <= n; i++) { string x = ""; int t = i; stack<int> st; while (t) { st.push(t % 10); t /= 10; } while (st.size()) { x += cvt[st.top()]; st.pop(); } res[x] = i; } for (auto it : res) { c++; printf("%d ", it.second); if (!(c % 10))puts(""); } return 0; } | cs |
'알고리즘 관련 > BOJ' 카테고리의 다른 글
BOJ)3736 System Engineer (0) | 2017.03.25 |
---|---|
BOJ)2660 회장뽑기 (0) | 2017.03.23 |
BOJ)1747 소수&팰린드롬 (0) | 2017.03.23 |
BOJ)10835 카드게임 (0) | 2017.03.23 |
BOJ)7535 A Bug's Life (0) | 2017.03.22 |