728x90
문제
수 N개 A1, A2, ..., AN이 주어진다. A를 오름차순 정렬했을 때, 앞에서부터 K번째 있는 수를 구하는 프로그램을 작성하시오.
https://www.acmicpc.net/problem/11004
입력
첫째 줄에 N(1 ≤ N ≤ 5,000,000)과 K (1 ≤ K ≤ N)이 주어진다.
둘째에는 A1, A2, ..., AN이 주어진다. (-109 ≤ Ai ≤ 109)
출력
A를 정렬했을 때, 앞에서부터 K번째 있는 수를 출력한다.
예제
# input
5 2
4 1 2 3 5
# output
2
문제 풀이
import sys
input = sys.stdin.readline
N, K = map(int, input().split())
A = list(map(int, input().split()))
A.sort()
print(A[K-1])
import sys
import heapq
input = sys.stdin.readline
# 입력 받기
N, K = map(int, input().split())
A = list(map(int, input().split()))
# 리스트를 힙으로 변환
heapq.heapify(A)
# K-1개의 요소를 제거
for _ in range(K-1):
heapq.heappop(A)
# K번째 요소를 추출
print(heapq.heappop(A))
파이썬을 독학하시는 분들에게 도움이 되길 바라며,
혹 더 좋은 방법이 있거나 오류가 있다면 편하게 말씀 부탁드립니다.
728x90