[BAEKJOON 25305번 : 커트라인]
[문제]

[고찰]
해당 문제는 점수들을 입력받고, 내림차순으로 정렬하여 k번째 점수를 출력하기만 하면 되는 쉬운 문제입니다.
다만, sort 함수를 내림차순으로 정렬하는 것을 몰랐어서 정리합니다.
[개념]
std : : sort
오름차순 정렬
std::sort(v.begin(), v.end());
sort 함수는 오름차순 정렬이 기본이며, 끝주소는 포함되지 않습니다.
STL에서 제공하는 함수 객체(Function Object, 기본 비교자)로 오름차순 정렬을 할 때 사용하는 비교자이지만, 오름차순 정렬이 기본인 sort 함수에서는 명시하지 않아도 동작은 같습니다.
내림차순 정렬
내림차순 정렬을 하기 위해서는 STL에서 제공하는 함수 객체(기본 비교자)인 greater<T>( )가 필요합니다.
std::sort(v.begin(), v.end(), greater<T>());
사용자 정의 기준 정렬
람다를 사용하면, 복잡한 조건으로 정렬하는 것이 가능합니다.
std::sort(v.begin(), v.end(), [](int a, int b)
{
return a > b; // 내림차순
});
[정리]
자주 사용하는 함수에 대해 깊이 알아볼 생각을 하지 않은 것이 반성되는 문제였습니다.
[Solution]
#include <iostream
#include <vector>
#include <algorithm>
using namespace std;
int main()
{
ios_base::sync_with_stdio(false);
cin.tie(nullptr);
int N, k;
vector<int> range;
cin >> N >> k;
while (N--)
{
int score;
cin >> score;
range.push_back(score);
}
// 오름차순 정렬하여, 뒤에서 k번째 점수 출력
sort(range.begin(), range.end());
cout << range[range.size() - k];
// 내림차순 정렬하여, k번째 점수 출력
// sort(range.begin(), range.end(), greater<int>());
// cout << range[k - 1];
return 0;
}'코딩 테스트' 카테고리의 다른 글
| [코딩테스트 24일차] BAEKJOON 2609번 : 최대공약수와 최소공배수 (0) | 2025.05.29 |
|---|---|
| [코딩테스트 23일차] BAEKJOON 2869번 : 달팽이는 올라가고 싶다 (0) | 2025.05.28 |
| [코딩테스트 21일차] BAEKJOON 1712번, BAEKJOON 10811번, BAEKJOON 2587번 (0) | 2025.05.23 |
| [코딩테스트 20일차] BAEKJOON 2231번 : 분해합 (0) | 2025.05.23 |
| [코딩테스트 19일차] BAEKJOON 2292번 : 벌집 (0) | 2025.05.17 |