코딩테스트

프로그래머스 이중우선순위큐 파이썬

yolang 2024. 7. 31. 16:45
728x90

 

🔗 이중우선순위큐

 

📌오늘의 학습 키워드

  • Heap 문제였고 어렵지 않았다.

✨공부한 내용 본인의 언어로 정리하기

  • Heap을 사용하면 가장 작은 요소를 뽑아 낼 수 있으나 가장 큰 요소는 다른 처리를 해줘야 한다. 

📚오늘의 회고

  • 어떤 문제가 있었고, 나는 어떤 시도를 했는지
    • Heap을 사용하면 쉽게 해결할 수 있었다. 
  • 어떻게 해결했는지
    • 가장 큰 요소를 뽑아내는 방법으로는  list로 바꿔준 뒤에 sort 하고 pop을 했다.
  • 무엇을 새롭게 알았는지
    • heapq를 list로 변환하면 sort 된 리스트를 반환하는지 긴가민가 했는데 아닌거 같다. sort를 하고 안하고 했을 때 테스트 케이스 1개를 통과 유무가 달라졌기 때문이다.
  • 내일 학습할 것은 무엇인지
    • 진짜로 재귀 공부한다.

[🤓문제 해결 코드]

import heapq
def solution(operations):
    answer = []
    heapq.heapify(answer)
    for op in operations:
        a, b = op.split()
        b = int(b)
        if a == "I":
            heapq.heappush(answer, b)
        elif a == "D":
            if answer:
                if b == 1:
                    answer = sorted(list(answer))
                    answer.pop()
                    heapq.heapify(answer)
                elif b == -1:
                    heapq.heappop(answer)

    if answer:
        return [max(answer), min(answer)]
    else:
        return [0, 0]
728x90