BOJ: 11004

문제

수 N개 $A_1$, $A_2$, …, $A_N$이 주어진다. A를 오름차순 정렬했을 때, 앞에서부터 K번째 있는 수를 구하는 프로그램을 작성하시오.

입력

첫째 줄에 N(1 ≤ N ≤ 5,000,000)과 K (1 ≤ K ≤ N)이 주어진다.
둘째에는 $A_1$, $A_2$, …, $A_N$이 주어진다. ($-10^9$ ≤ $A_i$ ≤ $10^9$)

출력

첫째 줄에 입력으로 주어진 M개의 수에 대해서, 각 수가 적힌 숫자 카드를 상근이가 가지고 있으면 1을, 아니면 0을 공백으로 구분해 출력한다.


Solution

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
package main

import (
"bufio"
"fmt"
"os"
"sort"
)

func main() {
var reader *bufio.Reader = bufio.NewReader(os.Stdin)
var writer *bufio.Writer = bufio.NewWriter(os.Stdout)
defer writer.Flush()

var N, K int
fmt.Fscan(reader, &N, &K)
l := make([]int, N)
for i := 0; i < N; i++ {
fmt.Fscan(reader, &l[i])
}
sort.Slice(l, func(i, j int) bool {
return l[i] < l[j]
})
fmt.Fprint(writer, l[K-1])
}

심상치 않은 N의 크기에 쫄아서 이번에도 bufio 패키지를 이용해 입출력을 정의했다.
정렬하는 것은 쉬우니,,, 더 이상의 자세한 설명은 생략한다.