https://www.acmicpc.net/problem/1427
이번에는 입력받은 숫자를 정렬하는 문제. 각 자리수로 분해해서 정렬하면 된다.
// C solution
#include <stdio.h>
#include <stdlib.h>
int compare (const void * a, const void * b) {
int x = *(int *)a;
int y = *(int *)b;
return x < y;
}
int main () {
int temp, len = 0;
int number[10];
scanf("%d", &temp);
for (int i = 0; temp != 0; i++) {
number[i] = temp%10;
temp /= 10;
len++;
}
qsort(number, len, sizeof(int), compare);
for (int i = 0; i < len; i++) {
printf("%d", number[i]);
}
}
// C++ solution
#include <iostream>
#include <vector>
#include <algorithm>
#include <functional>
using namespace std;
int main () {
ios_base::sync_with_stdio(false);
cin.tie(nullptr);
int n;
vector<int> v;
vector<int>::iterator iter;
cin >> n;
while (n) {
v.push_back(n % 10);
n /= 10;
}
sort(v.begin(), v.end(), greater<>());
for (iter = v.begin(); iter != v.end(); iter++)
cout << *iter;
}
22.01.09
지금까지 블로그에 올린 문제를 둘러보다가, 이 문제를 다시 보게 되었는데, 생각해보니 굳이 정수로 받아서 10으로 나눠서 할 필요가 없이 그냥 문자열로 처리하면 되는 일이었다.
#include <iostream>
#include <string>
#include <algorithm>
#include <functional>
using namespace std;
int main () {
ios_base::sync_with_stdio(false);
cin.tie(nullptr);
string str;
cin >> str;
sort(str.begin(), str.end(), greater<>());
cout << str;
}
'coding_test > BAEKJOON' 카테고리의 다른 글
백준 1920번 C, C++ 풀이 (0) | 2021.12.07 |
---|---|
백준 18870번 C++ 풀이 (0) | 2021.11.29 |
백준 2108번 C++ 풀이 (0) | 2021.11.29 |
백준 11651번 C / C++ 풀이 (0) | 2021.11.29 |
백준 10814번 C, C++ 풀이 (0) | 2021.11.25 |