전공/Problem Solving

[알고리즘/문제풀이/BOJ 1427번] 소트인사이드

caneo 2021. 6. 19. 15:05
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;
}

 

https://www.acmicpc.net/problem/1427

728x90