티스토리 뷰
https://www.acmicpc.net/problem/11279
11279번: 최대 힙
첫째 줄에 연산의 개수 N(1 ≤ N ≤ 100,000)이 주어진다. 다음 N개의 줄에는 연산에 대한 정보를 나타내는 정수 x가 주어진다. 만약 x가 자연수라면 배열에 x라는 값을 넣는(추가하는) 연산이고, x가 0
www.acmicpc.net
1. 접근 방식
- 문제 자체가 최대 힙을 이야기하고 있다.
- heapq로 최대 힙을 구현하는 방법은 2가지가 있는데, 내가 작성한 방법이 속도가 더 빠르다.
# 1
heappush(heap, (-n, n))
heappop(heap)[1]
# 2
heappush(heap, -n)
-heappop(heap)
처음에는 최대 힙을 만들기 위해 1번처럼 코드를 작성했더니, 실행 시간이 180ms가 걸렸다. 그러나 2번째 방법으로 실행해보니, 실행 시간이 128ms로 줄었다. 앞으론 최대 힙을 구현할 때 2번 방법을 사용해야겠다.
2. 정답 코드
from heapq import heappush, heappop
import sys
input = sys.stdin.readline
heap = []
count = int(input())
for _ in range(count) :
n = int(input())
if not n :
print(-heappop(heap) if heap else 0)
continue
heappush(heap, -n)
부스트캠프를 진행하면서 최대한 코드를 깔끔하게 작성하도록 노력하고 있다.
따라서 else문이 생기면 불필요한 탭이 추가되기 때문에 if문에서 continue를 사용함으로써 else문을 제거했고, 어찌보면 불필요한 count = int(input()) 변수를 따로 생성함으로써 반복문 실행 횟수를 나타내었다.
728x90
'코딩 테스트 > 백준' 카테고리의 다른 글
[백준] 11286번 절댓값 힙 파이썬 정답 코드 (0) | 2023.08.08 |
---|---|
[백준] 1927 최소 힙 파이썬 정답 코드 (0) | 2023.08.08 |
[백준] 10994번 별 찍기 - 19 파이썬 풀이 (0) | 2023.06.23 |
[백준] 1913번 달팽이 파이썬 정답 코드 (0) | 2023.06.22 |
[백준] 18870번 좌표 압축 파이썬 정답 코드 (0) | 2023.06.21 |