OS: MAC
참고: 👉 점프 투 파이썬 - 라이브러리 예제 바로가기
012. 수상자 3명을 선정하려면? ― heapq(힙큐)
| 구분 | 설명 | 예제 | 결과 |
| 모듈 임포트 | 힙(Heap) 기능 사용 준비 | import heapq | - |
| 기본 개념 | 힙은 가장 작은 값(min-heap)을 빠르게 꺼낼 수 있는 자료구조 |
heap = [] heapq.heappush(heap, 5) print(heap) |
[5] |
| 데이터 추가 (삽입) |
heappush(heap, item) : 힙에 값을 추가 | heapq.heappush(heap, 3) heapq.heappush(heap, 8) print(heap) |
[3, 5, 8] |
| 데이터 꺼내기 (삭제) |
heappop(heap) : 가장 작은 값 꺼냄 | heapq.heappop(heap) | 3 |
| 한 번에 힙 생성 | heapify(list): 리스트를 힙으로 변환 | nums = [7, 2, 5, 3] heapq.heapify(nums) print(nums) |
[2, 3, 5, 7] |
| 가장 작은 값 3개 추출 |
nsmallest(n, iterable): 가장 작은 n개 반환 | heapq.nsmallest(3, [90, 15, 290, 289]) | [15, 90, 289] (가장 작은 3개) |
| 가장 큰 값 3개 추출 |
nlargest(n, iterable): 가장 큰 n개 반환 | heapq.nlargest(3, [90, 15, 290, 289]) | [290, 289, 90] (가장 큰 3개) |
| K번째 작은 요소 찾기 |
def find_kth_smallest(nums, k): return heapq.nsmallest(k, nums)[-1] k번째로 작은 요소 찾기 |
import heapq # 함수 정의 def find_kth_smallest(nums, k): return heapq.nsmallest(k, nums)[-1] # 테스트 nums = [7, 2, 9, 4, 3, 8] k = 3 result = find_kth_smallest(nums, k) print(f"{k}번째로 작은 수는 {result}입니다.") |
3번째로 작은 수는 4입니다. |
| K번째 큰 요소 찾기 | def find_kth_largest(nums, k): return heapq.nlargest(k, nums)[-1] k번째로 큰 요소 찾기 |
import heapq def find_kth_largest(nums, k): return heapq.nlargest(k, nums)[-1] nums = [7, 2, 9, 4, 3, 8] k = 2 result = find_kth_largest(nums, k) print(f"{k}번째로 큰 수는 {result}입니다.") |
2번째로 큰 수는 8입니다. |
라이브러리 예제 문제: 교내 육상대회의 100m 달리기 경기 결과 다음과 같은 기록을 얻었다. 이 결과를 바탕으로 3명에게 기록 순으로 금, 은, 동메달을 수여하고자 한다. 기록이 좋은 순서대로 3명을 자동으로 뽑는 프로그램은 어떻게 만들면 될까?
| 문제 | 강보람 12.23 김지원 12.31 박시우 11.98 장준혁 11.99 차정웅 11.67 박중수 12.02 차동현 11.57 고미숙 12.04 한시우 11.92 이민석 12.22 |
| 풀이 |

'미래 먹거리를 위하여' 카테고리의 다른 글
| [파이썬 정복하기] 라이브러리 3장 - 다양한 데이터 다루기6 (맥OS 기준) (1) | 2025.11.08 |
|---|---|
| [파이썬 정복하기] 라이브러리 3장 - 다양한 데이터 다루기5 (맥OS 기준) (1) | 2025.11.07 |
| [파이썬 정복하기] 라이브러리 3장 - 다양한 데이터 다루기3 (맥OS 기준) (0) | 2025.11.05 |
| [파이썬 정복하기] 라이브러리 3장 - 다양한 데이터 다루기2 (맥OS 기준) (1) | 2025.11.04 |
| [파이썬 정복하기] 라이브러리 3장 - 다양한 데이터 다루기1 (맥OS 기준) (2) | 2025.11.03 |