본문 바로가기
Algorithm/BackJoon

25305번: 커트라인

by 꼬부기가우는소리 2023. 6. 8.
728x90

 

- 관련 사이트: https://www.acmicpc.net/problem/25305

 

25305번: 커트라인

시험 응시자들 가운데 1등은 100점, 2등은 98점, 3등은 93점이다. 2등까지 상을 받으므로 커트라인은 98점이다.

www.acmicpc.net

 

N명들 중 k번째로 높은 점수를 구하는 문제이다.

내장 함수 sort를 사용하여 문제를 해결하였다.

 

1) N명의 점수 입력받은 후 내림차순으로 정렬

2) k번째 점수 확인

 

#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;

int main()
{
    int N, k, x;
    cin >> N >> k;
    
    vector<int> scores(N);
    for (int i = 0; i < N; i++)
        cin >> scores[i];
    
    sort(scores.rbegin(), scores.rend());
    cout << scores[k - 1] << "\n";
    return 0;
}

- 메모리: 2020 KB

- 시간: 0 ms

-  코드 길이: 299 B

 

퀵 소트를 이용하여 정렬해주는 방법도 있다.

이 때, compare 함수의 파라미터는 void* 형이므로 int* 형으로 변환 후 비교를 수행해주어야 한다.

 

#include <iostream>
#include <cstdlib>
using namespace std;

int compare(const void* a, const void* b)
{
	const int* x = (int*) a;
	const int* y = (int*) b;

	if (*x > *y)
        return -1;
	else if (*x < *y)
        return 1;

	return 0;
}

int main()
{
    int N, k, x;
    cin >> N >> k;
    
    int scores[N];
    for (int i = 0; i < N; i++)
        cin >> scores[i];
    
    qsort(scores, N, sizeof(int), compare);
    cout << scores[k - 1] << "\n";
    return 0;
}

- 메모리: 2020 KB

- 시간: 0 ms

- 코드 길이: 461 B

'Algorithm > BackJoon' 카테고리의 다른 글

2744번: 대소문자 바꾸기  (0) 2023.06.10
11942번: 고려대는 사랑입니다  (0) 2023.06.09
2587번: 대표값2  (0) 2023.06.07
10989번: 수 정렬하기 3  (0) 2023.06.06
2751번: 수 정렬하기 2  (0) 2023.06.06

댓글