본문 바로가기

Study/문제 풀이 (acmicpc.net)

『C언어』 백준 │ 25305번 문제 풀이 - 커트라인

『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(); 사용법 :