https://www.acmicpc.net/problem/2751
분명 2750번보다 시간제한이 더 널널한데도 같은 퀵정렬 알고리즘으로 풀리지 않는걸 보니 테스트케이스가 난리가 났나보다. 단계별 풀이에서는 내장 정렬을 사용하는걸 추천한다고 했으니 내장정렬을 써보자.
https://dojang.io/mod/page/view.php?id=638 를 참조했다.
#include <stdio.h>
int compare(const void *a, const void *b) // 오름차순 비교 함수 구현, 비교의 기준이 되는 함수이다.
{
int num1 = *(int *)a; // void 포인터를 int 포인터로 변환한 뒤 역참조하여 값을 가져옴
int num2 = *(int *)b; // void 포인터를 int 포인터로 변환한 뒤 역참조하여 값을 가져옴
if (num1 < num2) // a가 b보다 작을 때는
return -1; // -1 반환
if (num1 > num2) // a가 b보다 클 때는
return 1; // 1 반환
return 0; // a와 b가 같을 때는 0 반환
}
int main () {
int *arr = NULL;
int len, i;
scanf("%d", &len);
arr = (int *)malloc(len * sizeof(int));
for (i = 0; i < len; i++) {
scanf("%d", &arr[i]);
}
qsort(arr, len, sizeof(int), compare);
for (i = 0; i < len; i++) {
printf("%d \n", arr[i]);
}
free(arr);
return 0;
}
'coding_test > BAEKJOON' 카테고리의 다른 글
백준 1011번 C언어 풀이 (0) | 2021.11.01 |
---|---|
백준 2609번 C언어 풀이 (0) | 2021.10.27 |
백준 2750번 C언어 풀이 (0) | 2021.10.26 |
백준 1356번 C언어 풀이 (0) | 2021.10.25 |
백준 9037번 C언어 풀이 (0) | 2021.10.07 |