C
[C]백준 12.정렬: 1427
열지희공
2022. 1. 22. 00:53
백준 1427
내코드
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main() {
int n;
int arr[10] = { 0, };
scanf("%d", &n);
while (n > 0) {
arr[n % 10]++;
n /= 10;
}
for (int i = 9; i >=0; i--) {
for(int j = 0; j < arr[i]; j++) {
printf("%d", i);
}
}
return 0;
}
각 자리의 수들을 정렬하면 되기에 정렬해야하는 수의 범위는 0부터 9까지이다. 따라서 수의 범위가 적기에 카운팅 정렬방법으로 문제를 풀었다. 각 숫자가 입력된 수에 몇 개 있는 지 표시하기 위해 미리 크기가 10인 arr배열을 0으로 초기화해두었다. 그 후 입력받은 n의 각 자리 수에 해당하는 인덱스의 배열 값을 1씩 증가하였고, 내림차순으로 정렬해야하므로 arr배열의 마지막 인덱스부터 0까지 해당 배열값만큼 인덱스를 반복하여 출력하였다.
다른 사람들의 코드를 보니 문자열로 입력받아 내림차순으로 문자열을 정렬한 뒤 그 문자열을 출력하는 방식으로 풀어도 되는 것 같다.
<참고링크>
https://mjeong9316.tistory.com/173
[C 언어] 백준 1427. 소트인사이드
1427. 소트인사이드 (누르면 해당 문제로 이동) 숫자를 정렬하는 문제 제약사항) 시간 : 2 초 메모리 : 128 MB 문제) 배열을 정렬하는 것은 쉽다. 수가 주어지면, 그 수의 각 자리수를 내림차순으로 정
mjeong9316.tistory.com