heapq
백준 11286 풀이 (절댓값 힙, 최소 힙, heapq)
이번 문제는 새로운 기준으로 우선순위 큐를 만드는 문제였다. 힙에 값이 존재할때 절댓값을 기준으로 가장 작은 값을 뽑는다. 만약 절대값이 같은 수가 있다면 그중 가장 작은 수를 뽑는다. 처음에는 힙이 미리 값을 넣어놓은 상태에서 힙을 어떻게 탐색해야할지 고민을 했다. 그런데 생각해 보니, 애초에 절댓값과 실제 값을 같이 넣어도 되지 않을까 라는 생각을 하게 되었다. 그래서 절댓값과 실제값을 튜플로 넣고 출력하면 되지 않을까 싶었다. import sys import heapq n = int(input()) heap=[] for _ in range(n): t = int(sys.stdin.readline()) if t == 0: if len(heap) == 0: print(0) else: print(heapq..
백준 11279 풀이 (최대 힙, 우선순위 큐, heapq)
이번 문제는 힙문제이다. 문제는 간단하다 힙에 값을 넣으며 0값이 입력될때 가장 큰 값을 출력하면 된다. 단 이때 중요한 것은 힙을 만드는 것이다. import heapq를 사용하면 일반 리스트를 힙처럼 사용할 수 있게 된다. 관련 자료는 해당 블로그에서 확인가능하다. [파이썬] heapq 모듈 사용법 Engineering Blog by Dale Seo www.daleseo.com 그러나 heapq를 사용하게되면 최소힙을 구현하게 된다. 따라서 최대힙과는 다른 방식이다. 그래서 블로그의 고수분은 음수값을 사용해서 우선순위를 이용하여 최대힙처럼 응용을 하셨다. 그래서 나도 그러한 아이디어를 베껴서 heap에 값을 저장할때 그대로 음수로 바꾸어 heap에 저장하고 꺼낼때는 양수로 바꾸어 출력하는 방식을 선택..
백준 2751 풀이 (힙정렬)
힙정렬이 배웠는지 안배웠는지도 기억이 안나고 먼지 모르겠었다. 그래서 강의를 짧게 듣고 python에는 heapq라는 모듈이 있다는 것을 알게되었다. 그래서 heapq 모듈을 사용해서 풀었다. c++로 구조를 내가 짜면 더 공부가 되었겠지만 아직까지는 그정도 수준에 오르지 못했기에 모듈을 사용해서 간단히 풀수 있었다. import heapq as hq case = int(input()) a =[] for _ in range(case): hq.heappush(a,int(input())) for _ in range(case): print(hq.heappop(a)) 단, 제출은 pypy3로 해야했다.