문제를 정리해보자.
l 숫자 => 큐에 숫자 삽입
D 1 => 큐에서 최댓값 삭제
D -1 => 큐에서 최솟값 삭제
단, 큐가 비어있는 상태에서 D 명령이 들어오면 무시한다.
최종 결과는 큐가 비어있다면 [0, 0]으로 아니라면, [최댓값, 최솟값]으로 출력한다.
리스트에 값을 넣을 때마다 정렬하는 방법을 선택했다.
from collections import deque
def solution(operations):
li = []
for string in operations:
alpha, num = string.split()
if alpha == "I": # 삽입
li.append(int(num))
li = deque(sorted(li))
elif li:
if alpha == "D" and num == "1": # 최댓값 삭제
li.pop()
else: # 최솟값 삭제
li.popleft()
if not li:
return [0, 0]
else:
return [li[-1], li[0]] # 최대, 최소
print(solution(["I -45", "I 653", "D 1", "I -642", "I 45", "I 97", "D 1", "D -1", "I 333"]))
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[프로그래머스][Python] 카펫 (0) | 2021.12.06 |
---|---|
[프로그래머스][Python] 모의고사 (0) | 2021.12.03 |
[프로그래머스][Python] H-Index (0) | 2021.12.02 |
[프로그래머스][Python] 가장 큰 수 (0) | 2021.11.30 |
[프로그래머스][Python] K번째수 (0) | 2021.11.26 |