일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
Tags
- FullyConnectedLayer
- skip-gram
- 파이썬
- Heap
- Sigmoid
- affine
- 신경망
- stak
- DeepLearning
- Stack
- select
- Word2vec
- CBOW
- 자연어처리
- SQL
- que
- backward
- 딥러닝
- hash
- 프로그래머스
- algorithm
- kakao
- PPMI
- MySQL
- Numpy
- boj
- sort
- Python
- Programmers
- dl
Archives
- Today
- Total
혜온의 이것저것
[코딩테스트 고득점 Kit] 힙(Heap) 이중우선순위큐 본문
[문제 이해 및 풀이]
맨 처음에는 heapq를 사용해서 문제를 해결해야겠다고 생각했다.
우선 operations을 돌면서 하나씩 입력받으며 I이면 heap에 push해주고 숫자가 1이면 초대값을, -1이면 최소값을 출력해주는 코드를 짜려고 했다.
heap은 push해주는 과정에서 최소힙 혹은 최대힙으로 바로 정렬이 가능하기 때문에 그 방법을 했지만 최소힙으로 넣은 경우에는 최대값을 출력하는 과정에서, 최대힙으로 넣은 경우에는 최소값을 출력하는 과정에서 어려움을 겪었다.
그래서 우선 stack/que를 사용해보기로 하였다. delete명령을 받으면 list정렬을 해준 뒤 맨 처음 값 혹은 맨 마지막 값을 출력해주는 코드를 짰다.
제출을 한 뒤, heapq를 이용한 방법을 찾아보다가 remove를 활용하면 된다는 것을 알게 되었다.
heapq를 쓸꺼라고 해서 무조건 heapq에 내장되어 있는 함수만을 생각했던 게 문제였던 거 같다. heapq에서도 remove 사용할 수 있다 !!
[나의 코드]
def solution(operations):
answer=[]
lst=[]
while(operations):
oper,num=operations.pop(0).split()
num=int(num)
if oper=='I':
lst.append(num)
elif len(lst)>0:
lst.sort(reverse=True)
if num==1:
lst.pop(0)
else:
lst.pop()
if len(lst)==0:
answer=[0,0]
else:
answer.append(max(lst))
answer.append(min(lst))
return answer
[수정 코드]
import heapq
def solution(operations):
heap=[]
while(operations):
oper,num=operations.pop(0).split()
num=int(num)
if oper=='I':
heapq.heappush(heap,num)
elif heap:
if num==-1:
heapq.heappop(heap)
print(heap)
else:
heap.remove(max(heap))
print(heap)
if len(heap)==0:
return [0,0]
else:
return [max(heap),heap[0]]
문제 출처 : https://programmers.co.kr/learn/courses/30/lessons/42628
'Algorithm > Programmers' 카테고리의 다른 글
[코딩테스트 고득점 KIT] 정렬 가장 큰 수 - Python (0) | 2021.09.28 |
---|---|
[코딩테스트 고득점 Kit] 정렬 K번째 수 - Python (0) | 2021.09.27 |
[코딩테스트 고득점 Kit] 힙(Heap) 더 맵게 - Python (0) | 2021.09.22 |
[코딩테스트 고득점 Kit] 스택/큐 프린트 - Python (0) | 2021.09.14 |
[코딩테스트 고득점 Kit] 스택/큐 기능개발 - Python (0) | 2021.09.14 |
Comments