『C언어』 백준 │ 25305번 문제 풀이 - 커트라인
문제
풀이과정
[문제 분석]
1. 상은 높은 점수부터 내림차수로 k명에게 수여하므로 정렬을 할 필요가 있음.
2. 등수 = 정렬한 배열의 Index+1이므로 굳이 다른 something을 창조할 필요가 없음.
[문제 풀이]
1. 응시자의 수(N)와 상을 받는 사람의 수(k)를 입력받음.
2. 각 학생의 점수 x를 입력받음.
3. 각 학생의 점수를 오름차순으로 Quick Sort함 (stdlib.h의 qsort이용)
4. 오름차순으로 정렬을 하였기 때문에 N-k를 하면 상을 받는 커트라인이 출력됨.
(N-1 = 1등, N-2 = 2등 ... ... N-k=k등 이므로)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
#include<stdio.h>
#include<stdlib.h>
int comp(const void *a, const void *b){
int num1 = *(int *)a;
int num2 = *(int *)b;
if (num1 < num2){
return -1;
}
if (num1 > num2){
return 1;
}
return 0;
}
int main(){
int total;
int cutline;
scanf("%d %d", &total, &cutline);
int *arr=(int*)malloc(sizeof(int) * total);
for(int i = 0 ; i < total ; i++){
scanf("%d", &arr[i]);
}
qsort(arr, total, sizeof(int), comp);
printf("%d", arr[total-cutline]);
return 0;
}
|
cs |
배운 점
qsort();
참고할 것
qsort(); 사용법 :