-
100일 동안 매일 알고리즘을 하면? - 10일차알고리즘 2022. 1. 9. 21:10
100일 동안 매일 알고리즘을 하면? - 10일차
https://programmers.co.kr/learn/courses/30/lessons/42628#
코딩테스트 연습 - 이중우선순위큐
programmers.co.kr
문제를 금방 풀 수 있었으나, 힙에 아무것도 없을경우 [0,0] 을 리턴하는 예외처리를 안해줘서 1시간동안 헤매다가 결국 풀었다.
되게 쉬운 문제였고 직관적인 문제였으나 짜잘한 실수들때문에 오래걸렸다.
str 형 숫자를 Int 로 바꿔주지 않아서,
예외처리를 안해줘서
import heapq; def solution(operations): minHeap = []; maxHeap = []; for o in operations: order, num = o.split(' '); if (order == "I"): heapq.heappush(minHeap, int(num)); heapq.heappush(maxHeap, -int(num)); elif (order == 'D' and num == '1'): if (len(minHeap) == 0): continue; dElem = heapq.heappop(maxHeap); minHeap.remove(-dElem); elif (order == 'D' and num == '-1'): if (len(minHeap) == 0): continue; dElem = heapq.heappop(minHeap); maxHeap.remove(-dElem); if (minHeap): maxV = -heapq.heappop(maxHeap); minV = heapq.heappop(minHeap); else: maxV = 0; minV = 0; return [maxV, minV];
https://programmers.co.kr/learn/courses/30/lessons/42587
코딩테스트 연습 - 프린터
일반적인 프린터는 인쇄 요청이 들어온 순서대로 인쇄합니다. 그렇기 때문에 중요한 문서가 나중에 인쇄될 수 있습니다. 이런 문제를 보완하기 위해 중요도가 높은 문서를 먼저 인쇄하는 프린
programmers.co.kr
deque 에서 queue 처럼 활용할때 pop() 이 아니라, popleft() 를 해야 정상적으로 작동한다....!!!!! 아아아아아아아아
from collections import deque; def solution(priorities, location): queue = deque(); cnt = 1; ii = 0; for i,p in enumerate(priorities): if (i == location) : queue.append([p,1]); else : queue.append([p,0]); while(queue): top = queue[0][0]; restart = False; for i in queue: print(top, i[0]); if top < i[0]: restart = True; break; if (restart): temp = queue.popleft(); queue.append(temp); else: print('not restart'); n = queue.popleft(); if (n[1] == 1): return cnt; else: cnt += 1;
'알고리즘' 카테고리의 다른 글
100일 동안 매일 알고리즘을 하면? - 12일차 (0) 2022.01.11 100일 동안 매일 알고리즘을 하면? - 11일차 (0) 2022.01.10 [프로그래머스] 디스크 컨트롤러 (0) 2022.01.08 100일 동안 매일 알고리즘을 하면? - 8일차 (0) 2022.01.07 100일 동안 매일 알고리즘을 하면? - 7일차 (0) 2022.01.04