본문 바로가기
💡Algorithm/python

[python]11286_절대값 힙

by haegomm 2023. 8. 11.

1 사용한 자료구조 및 개념 : heap

 

💡 문제풀이 아이디어 및 어려웠던 점

💫 아이디어

1️⃣ 입력된 x 값이 0이 아닌 경우, x 값을 추가한다.

2️⃣ 절대값이 작은 순서대로, 그리고 실제 값이 작은 순서대로 정렬시킨다.

3️⃣ 입력된 x 가 0인 경우, 힙에서 값을 추출하고 출력한다.

4️⃣ heapq.heappop 은 힙에서 가장 작은 값을 제거하고 그 값을 반환한다.

5️⃣ 튜플 형태로 저장하기 때문에 [1] 인덱스를 사용한다.

6️⃣ 힙이 비어 있다면 0을 출력한다.


Solution Code & 주석

import heapq
import sys

# 입력받을 연산의 개수
N = int(input())

# 힙 초기화
heap = []

for _ in range(N):
    x = int(sys.stdin.readline())
    
    # x가 0이 아니면 힙에 추가
    if x != 0:
        heapq.heappush(heap, (abs(x), x))
    else:
        # 힙이 비어있지 않다면 가장 작은 값을 출력하고 제거
        if heap:
            print(heapq.heappop(heap)[1])
        # 힙이 비어있다면 0을 출력
        else:
            print(0)

'💡Algorithm > python' 카테고리의 다른 글

[python]21942_부품 대여장  (0) 2023.09.05
[python]2696_중앙값 구하기  (0) 2023.08.23
[python]4385_생태학  (0) 2023.08.09
[python]1620_나는야 포켓몬 마스터 이다솜  (0) 2023.08.07
[python]1918_후위 표기식  (0) 2023.08.01