[Baekjoon/๐ŸฅˆSilverโ…ก] 11279: ์ตœ๋Œ€ ํž™

1 ๋ถ„ ์†Œ์š”

Intro

๋ฌธ์ œ์‚ฌ์ง„ ๋ฌธ์ œ์‚ฌ์ง„

Algoritm๐Ÿ‘ฉโ€๐Ÿ’ป: heap ์ง์ ‘ ๊ตฌํ˜„

#21.01.19
#11279: ์ตœ๋Œ€ ํž™
import sys
N = int(input())
heap = [0]

def push(x):
  heap.append(x)
  idx = len(heap)-1
  while 1:
    if idx == 1 or x < heap[idx//2]:
      break
    else:
      heap[idx] = heap[idx//2]
      heap[idx//2] = x
      idx //= 2

def pop():
  print(heap[1])
  lst = heap[-1]
  heap[1] = lst
  del(heap[-1])
  idx = 1
  while 1:
    if len(heap) < idx*2 + 1:
      break
    elif len(heap) >= idx*2 + 2:
      if heap[idx*2] > heap[idx*2 + 1]:
        max = idx*2
      else:
        max = idx*2 + 1
      if lst < heap[max]:
        heap[idx] = heap[max]
        heap[max] = lst
        idx = max
      else:
        break
    elif lst < heap[idx*2 ]:
      heap[idx] = heap[idx*2]
      heap[idx*2] = lst
      idx = idx * 2
    else:
      break

for i in range(N):
  x = int(sys.stdin.readline())
  if x == 0:
    if len(heap) == 1:
      print(0)
    else:
      pop()
  else:
    push(x)


๐Ÿ‘ฉ ํž™์„ ์ง์ ‘ ๊ตฌํ˜„ํ•ด๋ณด์•˜๋‹ค. ์˜ค๋‹ต์€ ์•„๋‹ˆ์—ˆ์œผ๋‚˜ ๋งŽ์€ ์‹œ๊ฐ„์„ ํ•„์š”๋กœ ํ–ˆ๊ณ , ์ฝ”๋“œ๋ฅผ ์•ฝ๊ฐ„ ์ˆ˜์ •ํ•  ๊ฒฝ์šฐ, ์‹œ๊ฐ„์ดˆ๊ณผ๊ฐ€ ๋˜์—ˆ๋‹คใ…œใ…œ

๊ฒฐ๊ณผ


Algoritm๐Ÿ‘ฉโ€๐Ÿ’ป: heapq

  • heapq ๋ชจ๋“ˆ์€ ์ผ๋ฐ˜ ๋ฆฌ์ŠคํŠธ๋ฅผ ๋งˆ์น˜ ์ตœ์†Œ ํž™์ฒ˜๋Ÿผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•œ๋‹ค.

  • ์šฐ๋ฆฌ๊ฐ€ ๊ตฌํ˜„ํ•ด์•ผ ํ•  ๊ฒƒ์€ ์ตœ๋Œ€ ํž™์ด๋ฏ€๋กœ ๋“ค์–ด๊ฐ€๋Š” ๊ฐ’์— -1์„ ๊ณฑํ•จ์œผ๋กœ์จ ๊ฐ€์žฅ ํฐ ๊ฐ’์ด ๊ฐ€์žฅ ์ž‘์€ ๊ฐ’์ด ๋˜๋„๋ก ๋ณ€๊ฒฝํ•˜๋ฉด ๋œ๋‹ค.

#21.01.19
#11279: ์ตœ๋Œ€ ํž™
import sys
import heapq

N = int(input())
heap = []

for _ in range(N):
  x = int(sys.stdin.readline())
  if x == 0:
    try:
      print(-1 * heapq.heappop(heap))
    except:
      print(0)

  else:
    heapq.heappush(heap, -x)
  • heapq๋Š” ์ตœ์†Œ ํž™์„ ์ง€์›ํ•˜๋ฏ€๋กœ ๋“ค์–ด๊ฐ€๋Š” ๊ฐ’์— -1์„ ๊ณฑํ•ด ์Œ์ˆ˜ํ˜•ํƒœ๋กœ ๊ฐ’์„ ์‚ฝ์ž…ํ•œ๋‹ค.
    • ์ตœ๋Œ€ ๊ฐ’์„ ์ตœ์†Œ ๊ฐ’์œผ๋กœ ๋ณ€๊ฒฝํ•œ๋‹ค.
  • ์ถœ๋ ฅํ•  ๋•Œ๋Š” popํ•œ ๊ฐ’์— -1์„ ๊ณฑํ•ด ์›๋ž˜ ๊ฐ’์„ ์ถœ๋ ฅํ•œ๋‹ค.

๊ฒฐ๊ณผ


์ฐธ๊ณ ๐Ÿ“ƒ


์ด๋ฒˆ ํฌ์ŠคํŒ…์€ ์—ฌ๊ธฐ์„œ!

๋!! ~(ห˜โ–พห˜~)

๋Œ“๊ธ€๋‚จ๊ธฐ๊ธฐ