[백준 1927][파이썬] 최소 힙. 파이썬 heapq 모듈 사용법 (우선순위 큐)

2023. 3. 13. 12:00·백준 알고리즘/기타
728x90

https://www.acmicpc.net/problem/1927

 

1927번: 최소 힙

첫째 줄에 연산의 개수 N(1 ≤ N ≤ 100,000)이 주어진다. 다음 N개의 줄에는 연산에 대한 정보를 나타내는 정수 x가 주어진다. 만약 x가 자연수라면 배열에 x라는 값을 넣는(추가하는) 연산이고, x가 0

www.acmicpc.net

우선순위 큐를 사용하여 푸는 문제이다.

 

우선순위 큐의 삽입, 삭제 시간 복잡도는 O(log N)이다.

 

파이썬에서 우선순위큐인 heapq 모듈을 제공한다.

 

heapq의 경우 사용방법이 특이한데 따로 리스트를 만들고 이 리스트를 heapq 메소드의 인자로 사용해야 한다.

 

1. 삽입 : heapq.heappush( list, value )

import heapq
li=[]
heapq.heappush(li, 10)
heapq.heappush(li, 20)
heapq.heappush(li, 15)

 

2. 삭제 : heapq.heappop( list )

 

리스트에 들어있는 값 중 가장 작은 값을 삭제 후 반환한다.

import heapq
li=[]
heapq.heappush(li, 10)
heapq.heappush(li, 20)
heapq.heappush(li, 15)

a=heapq.heappop(li)
b=heapq.heappop(li)
c=heapq.heappop(li)
print(a, b, c)

결과

10 15 20

 

3. 최소 값 얻기 : list[0]

heapq 모듈을 사용하여 리스트에 값을 넣을 때 항상 가장 작은 값이 인덱스 0에 존재한다.

 

참고로 오름차순으로 정렬하는 게 아니다.

 

기본적으로 heapq는 최소 힙이기 때문에 만약 최대 힙으로 바꾸고 싶다면 단순히 값을 넣을 때 음수로 바꾸어서 넣고 값을 뺄 때 양수로 바꾸어서 빼내면 된다.

 

<전체 코드>

import sys
import heapq
input=sys.stdin.readline
n=int(input())
q=[]
for _ in range(n):
    x=int(input())
    if (x==0):
        if len(q)==0:
            print(0)
        else:
            print(heapq.heappop(q))
    else:
        heapq.heappush(q, x)
728x90

'백준 알고리즘 > 기타' 카테고리의 다른 글

[JS] 알고리즘 문제 풀이 용 자바스크립트 문법 (업데이트 중)  (0) 2024.06.01
[백준 17386][파이썬] 선분 교차 1  (0) 2023.04.25
[백준 1629][파이썬] 곱셈  (0) 2023.02.28
[백준 1541][파이썬] 잃어버린 괄호  (0) 2023.02.27
[백준 10986][파이썬] 나머지 합  (0) 2023.02.21
'백준 알고리즘/기타' 카테고리의 다른 글
  • [JS] 알고리즘 문제 풀이 용 자바스크립트 문법 (업데이트 중)
  • [백준 17386][파이썬] 선분 교차 1
  • [백준 1629][파이썬] 곱셈
  • [백준 1541][파이썬] 잃어버린 괄호
웅대
웅대
알고리즘과 백엔드를 중심으로 열심히 공부 중입니다! 같이 소통하며 공부해요!
    250x250
  • 웅대
    웅대 개발 블로그
    웅대
  • 전체
    오늘
    어제
    • 분류 전체보기
      • 백준 알고리즘
        • dp
        • 문자열
        • 정렬
        • 스택
        • 브루트 포스
        • 이진 탐색
        • 정리
        • 우선순위 큐
        • 자료구조
        • 그래프
        • 기타
        • 그리디
      • 컴퓨터 언어
        • Kotlin
        • Python
        • C#
      • 공부
        • Database
        • Android Studio
        • Algorithm
        • 컴퓨터 구조론
        • Spring
        • lombok
        • AWS
        • Network
        • OS
        • Git & GitHub
        • AI
        • Computer Vision
        • 보안
        • Nginx
        • 프론트
        • express
        • GCP
        • grokking concurrency
        • DevOps
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    AWS Lambda
    binary search
    다익스트라
    embedding
    스택
    RNN
    codetree
    code tree
    Vector Store
    bfs
    ChatPromptTemplate
    Merge
    파이썬
    parametric search
    ci/cd
    nn.RNN
    openvidu 배포
    푸쉬 알람
    influxDB CLI
    스프링 OAuth2
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
웅대
[백준 1927][파이썬] 최소 힙. 파이썬 heapq 모듈 사용법 (우선순위 큐)
상단으로

티스토리툴바