수 N개 A1, A2, …, AN이 주어진다. A를 오름차순 정렬했을 때, 앞에서부터 K번째 있는 수를 구하는 프로그램을 작성하시오.
첫째 줄에 N(1 ≤ N ≤ 5,000,000)과 K (1 ≤ K ≤ N)이 주어진다.
둘째에는 A1, A2, …, AN이 주어진다. (-109 ≤ Ai ≤ 109)
A를 정렬했을 때, 앞에서부터 K번째 있는 수를 출력한다.
입력 | 출력 |
---|---|
5 2 4 1 2 3 5 | 2 |
N, target = map(int, input().split(' '))
arr = list(map(int, input().split(' ')))
arr.sort()
print(arr[target-1])
기본 내장 정렬 함수로 쉽게 풀 수 있었다. 하지만 시간도 4232ms 걸리고, 메모리도 620096kb 필요하였기 때문에 효율성 부분은 더 생각이 필요했다. pypy3로 했을 때는 시간이 2604ms로 절반으로 줄어들고, 메모리는 약간 증가했지만 효율적이었다.