728x90
숫자에서 가장 큰 자리수를 구한 후 각 자리수의 숫자들이 0~9라는 사실을 활용하여 계수정렬을 시켰습니다. 작성한 코드는 다음과 같습니다.
#include<stdio.h>
int N;
int count[10];
int in_number = 0;
//각 자리수는 0~9까지 제한된 범위 -> 계수정렬 O(N)
int main(void) {
scanf("%d", &N);
for (int i = 1000000000; i >= 1; i /= 10) {
if (N / i > 0 || in_number == 1) {
in_number = 1;
count[N / i]++;
N -= (N / i * i);
}
}
for (int i = 9; i >= 0; i--) {
if (count[i] != 0) {
printf("%d", i);
count[i]--;
i++;
}
}
return 0;
}
728x90
'전공 > Problem Solving' 카테고리의 다른 글
| [알고리즘/문제풀이/BOJ 10814번] 나이 순 정렬 (0) | 2021.06.20 |
|---|---|
| [알고리즘/문제풀이/BOJ 1181번] 단어 정렬 (0) | 2021.06.20 |
| [알고리즘/문제풀이/BOJ 11651번] 좌표 정렬하기 2 (0) | 2021.06.19 |
| [알고리즘/문제풀이/BOJ 11650번] 좌표 정렬하기 (0) | 2021.06.19 |
| [알고리즘/문제풀이/BOJ 2108번] 통계학 (0) | 2021.06.19 |