2751. 수 정렬하기 2 (누르면 해당 문제로 이동)
시간 복잡도가 O(nlogn) 인 정렬 알고리즘으로 풀 수 있습니다.
예를 들면 병합 정렬, 힙 정렬 등이 있지만, 어려운 알고리즘이므로 지금은 언어에 내장된 정렬 함수를 쓰는 것을 추천드립니다.
제약사항)
시간 : 2 초
메모리 : 256 MB
문제)
N개의 수가 주어졌을 때, 이를 오름차순으로 정렬하는 프로그램을 작성하시오.
입력)
첫째 줄에 수의 개수 N(1<=N<=1,000,000)이 주어진다.
둘째 줄부터 N개의 줄에는 숫자가 주어진다.
이 수는 절댓값이 1,000,000보다 작거나 같은 정수이다. 수는 중복되지 않는다.
출력)
첫째 줄부터 N개의 줄에 오름차순으로 정렬한 결과를 한 줄에 하나씩 출력한다.
입출력 예제
입력 | 출력 |
5 5 4 3 2 1 |
1 2 3 4 5 |
풀이 순서)
이전에 C언어에 내장된 quick sort(qsort) 알고리즘을 사용했습니다.
소스코드 및 결과 (C)
#include <stdio.h>
#include <stdlib.h>
int num[1000001] = { 0, };
int compare(const void *a, const void *b) {
if (*(int *)a > *(int *)b)
return 1;
else if (*(int *)a < *(int *)b)
return -1;
else
return 0;
}
int main() {
int N;
scanf("%d", &N);
for (int i = 0; i < N; i++)
scanf("%d", &num[i]);
qsort(num, N, sizeof(int), compare);
for (int i = 0; i < N; i++)
printf("%d\n", num[i]);
return 0;
}
메모리 : 8924 KB
시간 : 440 ms
코드길이 : 420 B
'[C언어] 백준온라인 > 정렬' 카테고리의 다른 글
[C 언어] 백준 1427. 소트인사이드 (3) | 2020.01.20 |
---|---|
[C 언어] 백준 2108. 통계학 (1) | 2020.01.20 |
[C 언어] 백준 10989. 수 정렬하기 3 (0) | 2020.01.20 |
[C 언어] 백준 2750. 수 정렬하기 (1) | 2020.01.20 |