Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | |
7 | 8 | 9 | 10 | 11 | 12 | 13 |
14 | 15 | 16 | 17 | 18 | 19 | 20 |
21 | 22 | 23 | 24 | 25 | 26 | 27 |
28 | 29 | 30 |
Tags
- 이클립스 DB연동
- 항해99 2기
- 자바 switch문
- 자바 스캐너
- 자바 while문
- 자바 반복문
- 자바 for문
- 자바 조건문
- 조코딩
- TypeScript
- 자바 삼항연산자
- 자바 if문
- 프로그래머스
- 자바 public
- react ag grid
- 정보처리기사실기
- 항해99
- Til
- 자바 공배수
- 자바 향상된 for문
- 타입스크립트
- java
- Vue3
- 자바 강제 캐스팅
- react with typescript
- 자바
- 변수
- MySQL
- 자바 자동캐스팅
- 자바 구구단 출력
Archives
- Today
- Total
뇌 채우기 공간
[백준] 11279 최대힙 파이썬 풀이 (힙) 본문
힙이란?
데이터에서 최대값과 최소값을 빠르게 찾기 위해 고안된 완전 이진트리
최대힙과 최소힙

최소힙은 최소값이 가장 상위에 있고
부모 노드가 자식 노드보다 값이 작아야한다.
최대 힙은 최대값이 가장 상위에 있고
자식 노드가 부모 노드보다 값이 작아야한다.
문제
값을 넣고 0을 입력하면 배열에서 가장 큰 값을 출력해라
문제풀이
- heapq에서는 최소 힙을 제공하기때문에 값을 -를 붙인 key값으로 heap에 넣는다.
- 그러면 가장 큰 값이 가장 상위에 올라가게된다.
- 그리고 출력할때는 value값으로 출력한다.
코드
import sys
import heapq as hq
numbers = int(input())
heap = []
for i in range(numbers):
num = int(sys.stdin.readline())
# print(num)
if num >0:
hq.heappush(heap,(-num,num)) #-를 하여 제일 큰 값이 맨 앞에 가도록 한다
else:
if heap:
print(hq.heappop(heap)[1]) #맨앞에 수를 꺼내는데 value값을 꺼낸다 (-5,5)
else:
print(0)
728x90
'알고리즘 > 백준 문제풀이' 카테고리의 다른 글
[백준] 2606 바이러스 파이썬 풀이(DFS와 BFS) (0) | 2021.06.24 |
---|---|
[백준] 11399 ATM 파이썬 풀이 (그리디) (0) | 2021.06.24 |
[백준] 11047 동전0 파이썬 풀이 (그리디) (0) | 2021.06.24 |
[백준] 1541 잃어버린 괄호 파이썬 풀이 (그리디) (0) | 2021.06.24 |
[백준] 1002 피보나치 함수 파이썬 풀이 (동적계획법) (0) | 2021.06.24 |