반응형
문제
https://www.acmicpc.net/problem/1927
1927번: 최소 힙
첫째 줄에 연산의 개수 N(1 ≤ N ≤ 100,000)이 주어진다. 다음 N개의 줄에는 연산에 대한 정보를 나타내는 정수 x가 주어진다. 만약 x가 자연수라면 배열에 x라는 값을 넣는(추가하는) 연산이고, x가 0
www.acmicpc.net
코드
import sys
import heapq
input = sys.stdin.readline
n = int(input())
heap = []
for i in range(n):
a = int(input())
if a != 0:
heapq.heappush(heap, a)
else:
if not heap:
print("0")
else:
print(heapq.heappop(heap))
설명
처음에 모듈 없이 단순 구현만으로 풀었을 때, 시간초과가 나서 검색을 통해 풀이 방법을 알았다.
heapq라는 모듈이 필요하다. 이 모듈을 통해 push를 할 때, 정렬이 된 상태로 push를 할 수 있다.
따라서 heap이라는 리스트를 만들어주고, 모듈을 통해 수를 push, pop 해주면서 조건에 맞게 출력하면 되는 문제였다.
반응형
'개발 연습장 > 백준 문제풀이' 카테고리의 다른 글
[파이썬, Python] 백준 1475: 방 번호 (0) | 2023.04.10 |
---|---|
[파이썬, Python] 백준 15649: N과 M (1) (0) | 2023.04.07 |
[파이썬, Python] 백준 1026: 보물 (0) | 2023.04.05 |
[파이썬, Python] 백준 1010: 다리 놓기 (0) | 2023.04.04 |
[파이썬, Python] 백준 25314: 코딩은 체육과목 입니다 (0) | 2023.04.03 |