728x90
- 관련 사이트: https://www.acmicpc.net/problem/25305
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
728x90
'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 |
댓글