문제후기
- operation에 들어있는 문자열을 판별하여 최대값과 최솟값을 찾아서 제외하고 결과적으로 최대값과 최솟값을 찾는 문제로 해석했습니다.
- 파이썬에서 제공하는 heapq 모듈은 최소 힙을 기준으로 하므로 최대힙을 어떻게 처리할까 생각하다가 tuple로 최대힙을 만들어서 했습니다.
- tuple로 최대힙을 만든경우 추출된 값을 다른 힙에서도 제외해야해서 시간이 오래걸린다는 것을 알고 nlargest 함수를 활용했습니다.
출처 : programmers.co.kr/learn/courses/30/lessons/42628?language=python3
import heapq
def solution(operations):
min_heap = [] # 힙 입력 배열
for i in operations:
# 숫자 입력인 경우
if i[0] == "I":
num = int(i.split()[1])
# 숫자를 heap에 push
heapq.heappush(min_heap, num)
# 최댓값 추출인 경우
elif i == "D 1":
# 배열 안에 값이 없으면 패쓰
if min_heap:
# nlargest로 가장 최댓값 추출
min_heap.remove(heapq.nlargest(1, min_heap)[0])
# 최솟값 추출인 경우
elif i == "D -1":
# 배열 안에 값이 없으면 패쓰
if min_heap:
# pop으로 최솟값 추출
heapq.heappop(min_heap)
# 배열에 값이 있는 경우 최댓값, 최솟값 추출
# 없는 경우 [0,0]추출
if min_heap:
return heapq.nlargest(1, min_heap) + [heapq.heappop(min_heap)]
return [0, 0]
'프로그래머스' 카테고리의 다른 글
[프로그래머스] 순위 -Python (0) | 2021.01.07 |
---|---|
[프로그래머스] 여행경로 -Python (0) | 2021.01.02 |
[프로그래머스] 입국심사 -Python (0) | 2021.01.02 |
[프로그래머스] 섬 연결하기 -Python (0) | 2020.12.31 |
[프로그래머스] 정수 삼각형 -Python (0) | 2020.12.31 |