PS/백준

백준 / String(문자열) / 1427번 / 소트인사이드 / C

KimMinJun 2021. 2. 19. 17:18

문제

배열을 정렬하는 것은 쉽다. 수가 주어지면, 그 수의 각 자리수를 내림차순으로 정렬해보자.

입력

첫째 줄에 정렬하고자하는 수 N이 주어진다. N은 1,000,000,000보다 작거나 같은 자연수이다.

출력

첫째 줄에 자리수를 내림차순으로 정렬한 수를 출력한다.

예제 입력 1

2143

예제 출력 1

4321

 

#include <stdio.h>
#include <string.h>

int main() {
	char n[10];
	char tmp;

	scanf("%s", n);

	for (int i = 0; i < strlen(n) - 1; i++) {
		for (int j = 0; j < strlen(n); j++) {
			if (n[j] < n[j + 1]) {
				tmp = n[j];
				n[j] = n[j + 1];
				n[j + 1] = tmp;
			}
		}
	}

	printf("%s", n);

	return 0;
}

정렬방법은 위 말고도 많지만, 구현이 비교적 간단한 버블정렬로 해결했다.

지금은 정렬시킬 수가 많지않아서 버블정렬로했지만, 사이즈가 커질수록 버블정렬은 효율적이지 못하다.

 

극단적인 예로 이미 정렬되있는 수를 입력했을때도, 정렬을 수행하게 되서 효율성이 매우 떨어진다.

 

퀵정렬, 합병정렬, 등등 많으니 시간나면 참고해보는 것도 좋겠다.