코딩 테스트/Baekjoon

S1 11286. 절댓값 힙

  • -
728x90
반응형

문제 보기 :  11286번: 절댓값 힙


문제

  • 정답률 : 57%


작성 코드

import heapq
import sys
input = sys.stdin.readline

# 연산의 개수 입력
n = int(input())

# 힙 초기화
calcul = []

for _ in range(n):
    x = int(input())
    if x != 0:
        # 힙에 (절댓값, 원래값) 형태로 저장
        heapq.heappush(calcul, (abs(x), x))
    else:
        if calcul:
            # 절댓값이 가장 작은 값을 출력하고 제거
            print(heapq.heappop(calcul)[1])
        else:
            # 힙이 비어있으면 0 출력
            print(0)

풀이

x가 0이면 절댓값이 가장 작은 값을 출력+제거하고
x가 0이 아니면 (절댓값, 원래 값) 형태로 힙에 추가한다.

calcul 힙은 (절댓값, 원래 값)로 저장하는데 그럼 원소들 전부 절댓값을 기준으로 정렬된다.

그리고 힙이 비어있으면 0을 출력하고,
아니라면 heapq.heappop으로 절댓값이 가장 작은 값의 원본 값을 출력시킨다.

320x100
728x90

'코딩 테스트 > Baekjoon' 카테고리의 다른 글

S1 2468. 안전 영역  (0) 2024.12.16
G4 2293. 동전 1  (1) 2024.12.15
S4 10866. 덱  (0) 2024.12.15
S4 10816번: 숫자 카드 2  (0) 2024.12.10
S1 7562. 나이트의 이동  (0) 2024.12.09
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.