오늘의 학습 키워드: 힙
문제: 이중우선순위큐
https://school.programmers.co.kr/learn/courses/30/lessons/42628
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
풀이
조건 중에 최댓값을 빼야 하는 경우에만 힙을 뒤집어주는 연산을 수행했다.
효율성이나 다른 테스트에서 그렇게까지 시간을 잡아먹는 케이스가 없다고 판단. 마지막 최대 최솟값 추출은 max, min함수를 사용했다.
from heapq import heapify, heappop, heappush
def solution(operations):
answer = []
h = []
for o in operations:
operation, value = o.split(" ")
value = int(value)
if operation == 'I':
heappush(h,value)
else:
if value > 0:
try:
h = [-1*i for i in h]
heapify(h)
heappop(h)
h = [-1*i for i in h]
heapify(h)
except:
pass
else:
try:
heappop(h)
except:
pass
if len(h)==0:
return [0,0]
else:
return [max(h),min(h)]
뒤집는 방법의 수행은 모든 요소에 -1을 곱하는 O(n)과 힙의 재구성인 O(n)의 시간이 걸리기 때문에
O(n)의 시간복잡도를 갖습니다.
회고
정리를 하다 보니 놓친 부분들을 다시 보게 되는 것 같습니다.
내일 학습할 것.
SQL, Python, 독서
'코딩테스트 > 알고리즘' 카테고리의 다른 글
99클럽 코테 스터디 12일차 TIL (H-Index) (0) | 2024.08.02 |
---|---|
99클럽 코테 스터디 11일차 TIL (카드뭉치) (0) | 2024.08.01 |
99클럽 코테 스터디 9일차 TIL (더 맵게) (0) | 2024.07.30 |
99클럽 코테 스터디 8일차 TIL + 기능개발 (1) | 2024.07.29 |
99클럽 코테 스터디 7일차 TIL + 하노이의 탑 (0) | 2024.07.29 |