[λ°±μ€€/python] 1927번 : μ΅œμ†Œ νž™

2021. 9. 6. 21:16

문제

널리 잘 μ•Œλ €μ§„ 자료ꡬ쑰 쀑 μ΅œμ†Œ νž™μ΄ μžˆλ‹€. μ΅œμ†Œ νž™μ„ μ΄μš©ν•˜μ—¬ λ‹€μŒκ³Ό 같은 연산을 μ§€μ›ν•˜λŠ” ν”„λ‘œκ·Έλž¨μ„ μž‘μ„±ν•˜μ‹œμ˜€.

  1. 배열에 μžμ—°μˆ˜ xλ₯Ό λ„£λŠ”λ‹€.
  2. λ°°μ—΄μ—μ„œ κ°€μž₯ μž‘μ€ 값을 좜λ ₯ν•˜κ³ , κ·Έ 값을 λ°°μ—΄μ—μ„œ μ œκ±°ν•œλ‹€.

ν”„λ‘œκ·Έλž¨μ€ μ²˜μŒμ— λΉ„μ–΄μžˆλŠ” λ°°μ—΄μ—μ„œ μ‹œμž‘ν•˜κ²Œ λœλ‹€.

 

μž…λ ₯

첫째 쀄에 μ—°μ‚°μ˜ 개수 N(1 ≤ N ≤ 100,000)이 주어진닀. λ‹€μŒ N개의 μ€„μ—λŠ” 연산에 λŒ€ν•œ 정보λ₯Ό λ‚˜νƒ€λ‚΄λŠ” μ •μˆ˜ xκ°€ 주어진닀. λ§Œμ•½ xκ°€ μžμ—°μˆ˜λΌλ©΄ 배열에 xλΌλŠ” 값을 λ„£λŠ”(μΆ”κ°€ν•˜λŠ”) 연산이고, xκ°€ 0이라면 λ°°μ—΄μ—μ„œ κ°€μž₯ μž‘μ€ 값을 좜λ ₯ν•˜κ³  κ·Έ 값을 λ°°μ—΄μ—μ„œ μ œκ±°ν•˜λŠ” κ²½μš°μ΄λ‹€. xλŠ” 231보닀 μž‘μ€ μžμ—°μˆ˜ λ˜λŠ” 0이고, 음의 μ •μˆ˜λŠ” μž…λ ₯으둜 주어지지 μ•ŠλŠ”λ‹€.

 

좜λ ₯

μž…λ ₯μ—μ„œ 0이 주어진 횟수만큼 닡을 좜λ ₯ν•œλ‹€. λ§Œμ•½ 배열이 λΉ„μ–΄ μžˆλŠ” 경우인데 κ°€μž₯ μž‘μ€ 값을 좜λ ₯ν•˜λΌκ³  ν•œ κ²½μš°μ—λŠ” 0을 좜λ ₯ν•˜λ©΄ λœλ‹€.

 

μ •λ‹΅

import heapq
import sys
input = sys.stdin.readline

heap =[]
N = int(input())
for _ in range(N):
    x = int(input())
    if x==0:
        if heap:
            print(heapq.heappop(heap))
        else:
            print(0)
    else:
        heapq.heappush(heap, x)

파이썬의 heapqλ₯Ό μ΄μš©ν•˜λ©΄ κ°„λ‹¨ν•˜κ²Œ ν’€ 수 μžˆλŠ” λ¬Έμ œμ΄λ‹€.

heapq에 λŒ€ν•œ μžμ„Έν•œ λ‚΄μš©μ€ μ•„λž˜μ˜ ν¬μŠ€νŒ…μ„ μ°Έκ³ ν•˜λ©΄ λœλ‹€.

2021.09.06 - [πŸ”μ•Œκ³ λ¦¬μ¦˜/πŸ”…κ°œλ…μ •λ¦¬] - [파이썬/python] νž™ (heap)

 

[파이썬/python] νž™ (heap)

νž™μ€ μ΅œλŒ€κ°’ 및 μ΅œμ†Œκ°’μ„ μ°Ύμ•„λ‚΄λŠ” 연산을 λΉ λ₯΄κ²Œ ν•˜κΈ° μœ„ν•΄ κ³ μ•ˆλœ μ™„μ „μ΄μ§„νŠΈλ¦¬ 기반의 μžλ£Œκ΅¬μ‘°μ΄λ‹€. νž™μ€ λΆ€λͺ¨λ…Έλ“œμ™€ μžμ‹λ…Έλ“œμ˜ κ΄€κ³„λ‘œ μ΅œλŒ€ νž™, μ΅œμ†Œ νž™μœΌλ‘œ λ‚˜λ‰œλ‹€. ν‚€ κ°’μ˜ λŒ€μ†Œκ΄€κ³„λŠ”

ye333.tistory.com

 

728x90

BELATED ARTICLES

more