본문으로 바로가기

연습문제 3번 시험공부 문제 입니다. 



> 특정 개수의 과목만 공부 가능하다

> 받는 점수가 정해져 있다

> 점수 정렬 후 가장 큰 점수를 받는 과목부터 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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
#include <stdio.h>
#include <stdlib.h>
int compare(void *first, void *second){
    if(*(int*)first < *(int*)second)
        return 1;
    else if(*(int*)first > *(int*)second)
        return -1;
    else
        return 0;
}
int Answer;
int main(void)
{
    int T, test_case;
    setbuf(stdout, NULL);
    scanf("%d"&T);
    for(test_case = 0; test_case < T; test_case++)
    {
        int n,m;
        int score=0;
        
        scanf("%d %d"&n, &m);
        
        int *arr = (int*)malloc(sizeof(int)*n);
        int i;
        
        for(i=0; i<n; i++){
            scanf("%d"&arr[i]);
        }
        qsort(arr, n, sizeof(int), compare);
        
        for(i=0; i<m; i++){
            score += arr[i];
        }
        
        free(arr);
        Answer = score;
        
        printf("Case #%d\n", test_case+1);
        printf("%d\n", Answer);
        
    }
    return 0;//Your program should return 0 on normal termination.
}
 
cs