문제
N개의 자연수가 주어질 때, 이 자연수들 중에서 k번째로 큰 수를 찾는 프로그램을 작성하시오. 만약 k=1 이라면, 가장 큰 수를 찾으면 된다.
입력
첫 번째 줄에 자연수 N, k가 주어진다. (1 ≤ N ≤ 100,000, 1 ≤ k ≤ 10) 두 번째 줄에 N개의 자연수가 주어진다.
출력
첫 번째 줄에 k번째 수를 출력한다.
예제 입력
10 3
1 5 2 3 8 4 7 3 2 10
예제 출력
7
예제 입력
5 4
5 5 1 2 3
예제 출력
2
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
#include <stdio.h>
int main() {
int n, k;
scanf("%d",&n);
scanf("%d",&k);
int arr[n];
int temp, t;
for(int i=0; i<n; i++){
scanf("%d",&arr[i]);
}
for(int i=0;i<k;i++){
t = i;
for(int j=i;j<n;j++){
if(arr[t]<arr[j]){
t = j;
}
}
temp = arr[t];
arr[t] = arr[i];
arr[i] = temp;
}
printf("%d ", arr[k-1]);
return 0;
}
|
'[C++] 알고리즘 교육 > 5. 기본정렬' 카테고리의 다른 글
[알고리즘 5.3.5] 기본정렬 - sequencesum (0) | 2019.04.25 |
---|---|
[알고리즘 5.3.4] 기본정렬 - PROSJEK (0) | 2019.04.25 |
[알고리즘 5.3.3] 기본정렬 - fibonacci (0) | 2019.04.25 |
[알고리즘 5.3.2] 기본정렬 - beehive (0) | 2019.04.25 |
[알고리즘 5.3.1] 기본정렬 - nextnum (0) | 2019.04.25 |
댓글