BAEKJOON/단계별로 풀어보기

[BOJ] 25305번 : 커트라인

말하는 알감자 2022. 9. 1. 16:44

🔒 문제

2022 연세대학교 미래캠퍼스 슬기로운 코딩생활에 $N$명의 학생들이 응시했다.

이들 중 점수가 가장 높은 k명은 상을 받을 것이다. 이 때, 상을 받는 커트라인이 몇 점인지 구하라.

커트라인이란 상을 받는 사람들 중 점수가 가장 가장 낮은 사람의 점수를 말한다.

⌨ 입력

첫째 줄에는 응시자의 수 N과 상을 받는 사람의 수 k가 공백을 사이에 두고 주어진다.

둘째 줄에는 각 학생의 점수 x가 공백을 사이에 두고 주어진다.

🖨 출력

상을 받는 커트라인을 출력하라.

📍 제한

  • 1 <= N <= 1000
  • 1 <= k <= N
  • 0 <= x <= 10000

📌 풀이

그냥 sorting 하고 k번째 사람 점수 출력하기

📚 예제

Ex1)

5 2
100 76 85 93 98

98

🔑 c언어 코드

#include <stdio.h>
#define SWAP(x,y,t)(t=x,x=y,y=t)
int sort(int* grade, int N);

int main()
{
    int N, k; // 응시자 수, 상 받는 사람 수
    scanf("%d %d", &N, &k);
    int* grade = malloc(sizeof(int) * N);
    for (int i = 0; i < N; i++) // 성적 입력
        scanf("%d", &grade[i]);

    grade = sort(grade, N);

    printf("%d", grade[k - 1]);

    return 0;
}

int sort(int* grade, int N)
{
    int t;
    for(int i=0;i<N;i++)
        for (int j = 1; j < N - i; j++)
        {
            if (grade[j - 1] < grade[j])
                SWAP(grade[j - 1], grade[j], t);
        }

    return grade;
}