728x90
https://www.acmicpc.net/problem/1755
벡터를 사용해서 문제를 풀었다.
범위 내의 수를 문자열로 바꾸고(to_string(i)) 각 자릿수를 돌면서 맞는 문자열을 추가해주고 pair로 <숫자를 문자열로 바꾼 값(String), 숫자 문자열(String)> 을 쌍으로 벡터에 넣었다. 바뀐 문자열을 기준으로 정렬하고 10개씩 출력해줬다.
//1755번: 숫자놀이
#include <iostream>
#include <algorithm>
#include <string>
#include <vector>
using namespace std;
int m, n, cnt = 0;
vector<pair<string, string>> v;
string str="";
void solution(string num){
for(int i=0; i<num.size(); i++){
switch (num[i]) {
case '0' : str += "zero "; break;
case '1' : str += "one "; break;
case '2' : str += "two "; break;
case '3' : str += "three "; break;
case '4' : str += "four "; break;
case '5' : str += "five "; break;
case '6' : str += "six "; break;
case '7' : str += "seven "; break;
case '8' : str += "eight "; break;
case '9' : str += "nine "; break;
default : break;
}
}
v.push_back(make_pair(str, num));
str = "";
}
bool compare(const pair<string, string> p1, const pair<string, string> p2){
return p1.first < p2.first;
}
int main() {
ios::sync_with_stdio(0); cout.tie(0); cin.tie(0);
cin >> m >> n;
for(int i = m; i <= n; i++) solution(to_string(i));
sort(v.begin(), v.end(), compare);
for(auto it = v.begin(); it != v.end(); it++){
if(cnt == 10) {
cout << '\n';
cnt = 0;
}
cnt++;
cout << it->second << ' ';
}
cout << '\n';
return 0;
}
💡공부 및 기록용 블로그이므로 오류가 있을 수 있습니다.💡
만약 문제에 오류나 오타가 있다면 댓글로 알려주세요➿
언제나 환영합니다. 감사합니다. 화이팅!
728x90
'알고리즘 > 백준' 카테고리의 다른 글
[c++] 1806번: 부분합 (0) | 2022.01.15 |
---|---|
[c++] 5800번: 성적 통계 (0) | 2022.01.14 |
[c++] 5635번: 생일 (0) | 2022.01.14 |
[c++] 1940번: 주몽 (0) | 2022.01.14 |
[c++] 17266번: 어두운 굴다리 (0) | 2022.01.13 |