카테고리 없음

<백준> 1927번 파이썬 알고리즘

changha. 2021. 10. 30. 20:04
# n 입력
n = int(input())
# 정수 x
arr = []
for i in range(n):
  x = int(input())
  # x가 자연수일 때 
  if x == int(x) and x > 0:
    arr.append(x)
  # x가 0일 때 
  elif x == 0:
    # 배열이 존재할 때 
    if len(arr) > 0:
      arr.sort()
      print(arr[0])
      del arr[0]
    # 배열 존재 x 
    else:
      print(0)

위는 틀린 코드이다 

그냥 시간 생각안하고 작성했다 

 

 

import heapq
import sys

# n 입력
n = int(sys.stdin.readline())
# 정수 x
heap = []
for i in range(n):
  x = int(sys.stdin.readline())
  # x가 자연수일 때 
  if x == int(x) and x > 0:
    heapq.heappush(heap, x)
  # x가 0일 때 
  elif x == 0:
    # 배열이 존재할 때 
    if len(heap) > 0:
      print(heapq.heappop(heap))
    # 배열 존재 x 
    else:
      print(0)

 

위는 heapq을 사용했을 때 이다

 

heap에 대한 정보는 

https://littlefoxdiary.tistory.com/3

 

[Python] 힙 자료구조 / 힙큐(heapq) / 파이썬에서 heapq 모듈 사용하기

힙은 특정한 규칙을 가지는 트리로, 최댓값과 최솟값을 찾는 연산을 빠르게 하기 위해 고안된 완전이진트리를 기본으로 한다. 힙 property : A가 B의 부모노드이면 A의 키값과 B의 키값 사이에는 대

littlefoxdiary.tistory.com

위 블로그가 정리를 잘 해놨다

 

힙 = 부모, 자식 노드간에 차이가 있음

 

파이썬은 아주 친절하게 라이브러리가 있어 편하게 풀었다