반응형
def solution(operations):
answer = []
for i in operations:
if "I" in i:
answer.append(int(i[2:]))
elif "D" in i:
if i[2] == "1" and answer:
answer.remove(max(answer))
elif answer:
answer.remove(min(answer))
if answer:
return max(answer), min(answer)
else:
return [0,0]
우선 정말 간단하게 풀어본 풀이이다. 이중우선순위큐라는 문제답지 않게 풀었다. 시간초과가 나올 줄 알았는데 의외로 시간 제한은 없었나 보다.
그래도 문제의 의도대로 heap을 사용해서 풀어보았다.
from heapq import heappush, heappop
def solution(arguments):
max_heap = [] #최대힙
min_heap = [] #최소힙
for arg in arguments:
if arg == "D 1":
if max_heap:
heappop(max_heap)
if max_heap == [] or -max_heap[0] < min_heap[0]:
min_heap = []
max_heap = []
elif arg == "D -1":
if min_heap:
heappop(min_heap)
if min_heap == [] or -max_heap[0] < min_heap[0]:
max_heap = []
min_heap = []
else:
num = int(arg[2:])
heappush(max_heap, -num)
heappush(min_heap, num)
if min_heap == []:
return [0, 0]
return [-heappop(max_heap), heappop(min_heap)]
반응형
'알고리즘 > 프로그래머스 level 3' 카테고리의 다른 글
[파이썬🐍] 프로그래머스 : 멀리 뛰기 (0) | 2021.09.10 |
---|---|
[파이썬🐍] 프로그래머스 : 단어 변환 (0) | 2021.07.20 |
[파이썬🐍] 프로그래머스 : 정수 삼각형 (0) | 2021.07.19 |
[파이썬🐍] 프로그래머스 : 등굣길 (0) | 2021.07.18 |
[파이썬🐍] 프로그래머스 : 네트워크 (0) | 2021.07.17 |
댓글