[BOJ] 11286번: 절댓값 힙 (python)

한서영·2023년 2월 13일
0

BOJ

목록 보기
3/15

문제 링크 : https://www.acmicpc.net/problem/11286

💡 해결 방법

  • 파이썬 우선순위 큐를 사용하면 쉽게 해결되는 문제
  • 절댓값이 작은 순서대로 출력하되, 절댓값이 같은 숫자가 있으면 음수 먼저 출력
  • 이를 해결하기 위해 우선순위 큐에 정렬 기준을 새로 적용하여 사용
  • stack.put((abs(input), input))으로 하여 절댓값이 정렬 기준이 됨
    - 정렬 기준 이후에 원래 우선순위 큐 방식인 오름차순으로 pop됨
    - stack.put() 안에 괄호로 한 번 더 묶어주어야 적용됨!!


📌 PriorityQueue

  • 클래스 임포트
from queue import PriorityQueue
que = PriorityQueue()
  • 원소 추가
que.put(1)
  • 원소 삭제
que.get()
  • 정렬기준 변경
que.put((1, 'hi'))
que.put((3, 'sy'))
que.put((2, 'im'))
# 출력 방법
que.get()[1]	#hi
que.get()[1]	#im
que.get()[1]	#sy

🖥️ 코드

import sys
from queue import PriorityQueue

N = int(sys.stdin.readline())
stack = PriorityQueue()

for i in range(N):
    input = int(sys.stdin.readline())
    if input != 0:
        stack.put((abs(input), input))
    else:
        if stack.empty():
            print(0)
        else:
            print(stack.get()[1])

✏️ 알고리즘 분류

  • 자료구조
  • 우선순위 큐

0개의 댓글