728x90
https://programmers.co.kr/learn/courses/30/lessons/42628
접근
힙을 이용하여 주어진 명령어대로 최댓값을 삭제하거나 최솟값을 삭제한다.
구현
- 빈 배열인 numbers를 선언한다.
- 주어진 operations를 탐색하여 명령어와 숫자를 분리하고
- 명령이 I일 때는 heappush로 숫자를 numbers에 대입한다. 이를 통해 numbers는 오름차순으로 정렬될 것이다.
- 명령어가 D이고 numbers가 비어있지 않을 때는
- 숫자가 1일 때 리스트 메서드인 pop으로 최댓값을 삭제하고 -1일 때는 heappop로 최솟값을 삭제한다.
- 연산을 모두 완료했을 때 numbers가 비어있다면 [0, 0]을 대입하고
- 그렇지 않다면 최댓값, 최솟값을 대입한다.
from heapq import heapify, heappop, heappush
def solution(operations):
answer = []
numbers = []
for op in operations:
op = op.split(' ')
cmd = op[0]
number = int(op[1])
if cmd == 'I':
heappush(numbers, number)
elif cmd == 'D' and numbers:
if number == 1:
numbers.pop()
else:
heappop(numbers)
if not numbers:
answer = [0, 0]
else:
answer = [max(numbers), min(numbers)]
return answer
'알고리즘 풀이 > 프로그래머스' 카테고리의 다른 글
[Level 3] 단어 변환 (0) | 2021.09.10 |
---|---|
[Level 3] 불량 사용자 (0) | 2021.09.10 |
[Level 2] 행렬 테두리 회전하기 (0) | 2021.09.09 |
[Level 3] 보석 쇼핑 (0) | 2021.09.08 |
[Level 3] 징검다리 건너기 (0) | 2021.09.07 |