https://www.acmicpc.net/problem/11004

[필자 사고]
단순히 오름차순 정렬한 뒤 해당 idx값을 반환하면 되는 문제다.
아래는 자세한 코드 해설이다.
[코드 해설]
main 함수
프로그램의 시작점으로, 전체 입력 처리와 정답 출력을 담당합니다.
- 입출력 최적화
- ios::sync_with_stdio(false); cin.tie(0); cout.tie(0);
- C++ 표준 입출력 속도를 빠르게 하기 위한 설정입니다.
- 입력 처리
- cin >> N >> K;
- N은 배열의 크기, K는 구하고자 하는 K번째 작은 수의 위치입니다.
- for (int i = 0; i < N; i++) 반복문에서 정수 num을 입력받아 arr 벡터에 저장합니다.
- cin >> N >> K;
- 정렬 (sort 함수)
- sort(arr.begin(), arr.end());
- 벡터 arr를 오름차순으로 정렬합니다.
- C++ 표준 라이브러리의 정렬 함수로, 평균 시간 복잡도는 O(N log N)입니다.
- 출력 (cout)
- 정렬된 배열에서 K - 1번째 원소(arr[K - 1])를 출력합니다.
- 문제에서 배열은 1번째부터 세므로, 인덱스 보정을 위해 K - 1을 사용합니다.
[소스 코드]
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int N, K;
vector<int> arr;
int main(void) {
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
cin >> N >> K;
for (int i = 0; i < N; i++) {
int num;
cin >> num;
arr.push_back(num);
}
sort(arr.begin(), arr.end());
cout << arr[K - 1];
}'백준 > 정렬' 카테고리의 다른 글
| 백준 1026 c++ "보물" -PlusUltraCode- (0) | 2025.09.17 |
|---|---|
| 백준 11728 c++ "배열 합치기" -PlusUltraCode- (0) | 2025.09.16 |
| 백준 12015 c++ "가장 긴 증가하는 부분 수열 2" -PlusUltraCode- (0) | 2024.12.26 |
| 백준 1202 C++ "보석 도둑" -PlusUltraCode- (1) | 2024.11.14 |
| 백준 10986 c++ "나머지 합" -PlusUltraCode- (0) | 2024.08.02 |