1. 문제
문제 요약
- 이중 우선순위 큐가 명령어대로 동작하도록 구현해서 배열에 담긴 명령어들의 동작이 모두 끝난 뒤 큐의 상태를 return하자.
- 주어지는 값 : 이중 우선순위 큐가 할 연산이 들어있는 operations 배열
- 사용되는 공식 : 위 사진에 명령어에 대한 설명 있음.
2. 입출력 예시와 설명
3. 코드
- 내가 시도한 코드 (힙 사용)
import heapq
def solution(operations):
answer = []
heapq.heapify(answer)
for x in operations:
i,j = x.split()
if (i == "I"):
j=int(j)
heapq.heappush(answer,j)
elif (x == "D -1"):
if(answer):
heapq.heappop(answer)
else:
if(answer):
answer.pop(answer.index(heapq.nlargest(1, answer)[0]))
if answer:
return [heapq.nlargest(1, answer)[0], heapq.nsmallest(1, answer)[0]]
else:
return [0, 0]
처음에 코드를 짰을 때는 계속 [0,0]만 출력됐었고, 두 번째로 코드를 짰을 때는 2가지 테스트 케이스 중 1가지만 계속 통과되었다. 로컬 python idle에서 여러 번 시도하며 print() 코드를 단계마다 추가하고 실행하길 반복한 결과 테스트 케이스 2가지 모두 통과했다. 하지만 제출 후 채점하기 한 결과... 문제가 뭔지 다시 발견하고 고친 결과 통과 성공!
코드 설명
-> heapq 내장 모듈을 불러온다. heapify 로 힙으로 바꿔준다. for문으로 operations의 값들을 하나씩 처리해준다.
for문 안의 if문으로 3가지 명령어의 처리가 잘 될 수 있게 분류한다. return이 되기 전에 if문으로 최소값과 최대값을 선별해준다. answer에 값이 없다면 [0,0]을 return 해준다.
'Programming > Python' 카테고리의 다른 글
[프로그래머스] 정렬 - 가장 큰 수 (Python3, 파이썬) (0) | 2022.02.14 |
---|---|
[프로그래머스] 정렬 - K번째수 (Python3, 파이썬) (0) | 2022.02.14 |
[프로그래머스] 힙(Heap) - 디스크 컨트롤러 (Python3, 파이썬) (0) | 2022.01.30 |
[프로그래머스] 힙(Heap) - 더 맵게 (Python3, 파이썬) (0) | 2022.01.30 |
[프로그래머스] 스택/큐 - 주식가격 (Python3, 파이썬) (0) | 2022.01.29 |