Notice
Recent Posts
Recent Comments
Link
반응형
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
Tags
- 동적계획법
- 백준
- 리액트
- OS
- LeetCode
- 리트코드
- dp
- sql
- C++
- CS
- python
- Level3
- 고득점Kit
- Medium
- VUE
- 프로그래밍
- 자바스크립트
- 프로그래머스
- web
- Doitvue.js입문
- 파이썬
- 배열
- javascript
- react
- Level1
- 카카오
- Level2
- typescript
- 웹프로그래밍
- 코테연습
Archives
- Today
- Total
[프로그래머스] 이중우선순위큐 - python 본문
반응형
이중우선순위큐
문제 설명
이중 우선순위 큐는 다음 연산을 할 수 있는 자료구조를 말합니다.
명령어수신 탑(높이)
I 숫자 | 큐에 주어진 숫자를 삽입합니다. |
D 1 | 큐에서 최댓값을 삭제합니다. |
D -1 | 큐에서 최솟값을 삭제합니다. |
이중 우선순위 큐가 할 연산 operations가 매개변수로 주어질 때, 모든 연산을 처리한 후 큐가 비어있으면 [0,0] 비어있지 않으면 [최댓값, 최솟값]을 return 하도록 solution 함수를 구현해주세요.
제한 조건
- operations는 길이가 1 이상 1,000,000 이하인 문자열 배열입니다.
- operations의 원소는 큐가 수행할 연산을 나타냅니다.
- 원소는 “명령어 데이터” 형식으로 주어집니다.- 최댓값/최솟값을 삭제하는 연산에서 최댓값/최솟값이 둘 이상인 경우, 하나만 삭제합니다.
- 빈 큐에 데이터를 삭제하라는 연산이 주어질 경우, 해당 연산은 무시합니다.
풀이
힙으로 넣으면 최소 값을 꺼낼 때는 O(1)
최대 값 찾을 때는 ? 1개 남을 때까지 다 꺼내
다 꺼낸 거를 담아놨다가 원래 힙이랑 바꿔치기
마지막에 원소가 1개 남을 경우 최솟값 = 최댓값이므로 최댓값을 최솟값으로 초기화 시켜 놓고 힙에 남은 원소 있을 때까지 다 꺼내서 업데이트 해줬다.
import heapq
def solution(operations):
heap = []
for op in operations:
o, n = op.split()
if o == 'I': # 삽입
heapq.heappush(heap, int(n))
else:
if heap:
if n == '1': # 최댓값 삭제
tmp = []
while len(heap) > 1:
tmp.append(heapq.heappop(heap))
heapq.heappop(heap)
heap = tmp
else: # 최솟값 삭제
heapq.heappop(heap)
if heap:
min_value = heapq.heappop(heap)
max_value = min_value
while heap:
max_value = heapq.heappop(heap)
return [max_value, min_value]
return [0,0]
효율성 검사도 없어서 그냥 통과했다 ..
반응형
'코테 문제 풀이' 카테고리의 다른 글
[프로그래머스] 섬 연결하기 - python (0) | 2022.04.15 |
---|---|
[프로그래머스] H-Index - python (0) | 2022.04.15 |
[프로그래머스] 디스크 컨트롤러 - python (0) | 2022.04.15 |
[프로그래머스] 주식가격 - python (0) | 2022.04.15 |
[프로그래머스] 다리를 지나는 트럭 - python (0) | 2022.04.15 |
Comments