백준_11286번

정소담·2023년 1월 29일
0

BOJ Short Review

목록 보기
23/44
post-thumbnail

11286번 절댓값 힙

n개의 정수를 입력 받는데 입력받은 정수는 배열한다.
0을 입력 받으면 배열한 정수들중 절댓값이 가장 작은 값을 출력하고 제거하는데 만약 배열 된 수가 없다면 0을 출력하는 문제

import heapq 
# 문제 제목에서도 나와있듯이 heap을 사용했다.
import sys

input = sys.stdin.readline
heap = []

for _ in range(int(input())): # 입력할 정수의 개수
    num = int(input()) # 정수입력
    if num == 0: # 만약 입력받은 정수가 0이라면
        if heap: # 배열된 숫자가 있을 때
            print(heapq.heappop(heap)[1])
            # 리스트의 첫번째 숫자 출력하고 삭제하는 메소드
        else: # 배열된 수가 없으면 0 출력
            print(0)
    else: # 0이 아니라면
        heapq.heappush(heap, (abs(num), num))
 # 리스트에 (절댓값,정수) 형태를 추가한다. (heapq.heappush메소드)
 # heapq를 사용하면 이진트리 구조 나열되는데 제일 작은수가 항상 첫번째로 온다.
 # 절댓값을 같이 입력해줘서 절댓값이 제일 작은수가 맨 앞으로 오게 해주고
 # 출력은 입력받은 정수가 출력 될 수 있도록 인덱스[1]을 출력하도록 했다.

정말 다양한 라이브러리들이 많은 것 같다..
계속 문제를 풀어보고 공부하다보면 더 많이 활용 할 수 있겠지!

profile
Hi ! I'm newbie :)

0개의 댓글