본문 바로가기

파이썬 알고리즘 풀이

44)최대힙

문제

최대힙 자료를 이용하여 다음과 같은 연산을 하는 프로그램을 작성하기

 

1) 자연수가 입력되면 최대힙에 입력한다.

 

2) 숫자 0 이 입력되면 최대힙에서 최댓값을 꺼내어 출력한다. (출력할 자료가 없으면 -1를 출력한다.)

 

3) -1이 입력되면 프로그램 종료한다.

 

조건

최대힙은 완전이진트리로 구현된 자료구조입니다.

 

그 구성은 부모 노드값이 왼쪽자식과 오른 쪽 자식노드의 값보다 크게 트리를 구성하는 것입니다.

 

그렇게 하면 트리의 루트(root)노드는 입력된 값들 중 가장 큰 값이 저장되어 있습니다.

 

예를 들어 5 3 2 1 4 6 7순으로 입력되면 최대힙 트리는 아래와 같이 구성됩니다.

제한사항

첫 번째 줄부터 숫자가 입력된다.

 

입력되는 숫자는 100,000개 이하이며 각 숫자의 크기는  정수형 범위에 있다.

 

2) 연산을 한 결과를 보여준다

 

문제풀이

import heapq as hq
a=[]

while True:
    n=int(input())
    if n==-1:
        break
    if n==0:
        if len(a)==0:
            print(-1)
        else:
            print(-hq.heappop(a))
    else:
        hq.heappush(a, -n)

'파이썬 알고리즘 풀이' 카테고리의 다른 글

46)이진트리 순회  (0) 2021.11.03
45)재귀함수를 이용한 이진수 출력  (0) 2021.11.03
43)최소힙  (0) 2021.11.02
42)Anagram  (0) 2021.11.02
41)단어 찾기  (0) 2021.11.02