[프로그래머스] 야근지수 (힙)
·
Coding Test/programmers
https://school.programmers.co.kr/learn/courses/30/lessons/12927 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 분석 남은 피로도를 최소화 하기 위해서 works 배열 내 모든 원소들의 제곱값의 합을 최소로 만듦 최대힙 사용 풀이 from heapq import heapify, heappush, heappop def solution(n, works): answer = 0 if sum(works) 0: maxval = heappop(works) heappush(works, maxval+1) n -= 1 for..
[11286] 절댓값 힙 (heapq, PriorityQueue)
·
Coding Test/Data Structure
11286번: 절댓값 힙 첫째 줄에 연산의 개수 N(1≤N≤100,000)이 주어진다. 다음 N개의 줄에는 연산에 대한 정보를 나타내는 정수 x가 주어진다. 만약 x가 0이 아니라면 배열에 x라는 값을 넣는(추가하는) 연산이고, x가 0 www.acmicpc.net import sys input=sys.stdin.readline from heapq import heappush, heappop n=int(input()) q = [] for _ in range(n): num=int(input()) if num==0: if len(q) > 0: print(heappop(q)[1]) else: print(0) else: heappush(q, (abs(num), num)) from queue import Prio..
[11279] 최대 힙 (heapq)
·
Coding Test/Data Structure
11279번: 최대 힙 첫째 줄에 연산의 개수 N(1 ≤ N ≤ 100,000)이 주어진다. 다음 N개의 줄에는 연산에 대한 정보를 나타내는 정수 x가 주어진다. 만약 x가 자연수라면 배열에 x라는 값을 넣는(추가하는) 연산이고, x가 0 www.acmicpc.net import sys input=sys.stdin.readline from heapq import heappush, heappop n=int(input()) q = [] for _ in range(n): num=int(input()) if num==0: if len(q) > 0: print(heappop(q)[1]) else: print(0) else: heappush(q, (-num, num))
[1927] 최소 힙 (heapq)
·
Coding Test/Data Structure
1927번: 최소 힙 첫째 줄에 연산의 개수 N(1 ≤ N ≤ 100,000)이 주어진다. 다음 N개의 줄에는 연산에 대한 정보를 나타내는 정수 x가 주어진다. 만약 x가 자연수라면 배열에 x라는 값을 넣는(추가하는) 연산이고, x가 0 www.acmicpc.net import sys input=sys.stdin.readline from heapq import heappush, heappop n=int(input()) q = [] for _ in range(n): num=int(input()) if num==0: if len(q)>0: print(heappop(q)) else: print(0) else: heappush(q, num)
파이썬 우선순위 큐, 힙
·
Coding Test/Data Structure
우선순위 큐(Priority Queue) 큐(Queue)는 먼저 들어오는 데이터가 먼저 나가는 FIFO(First In First Out) 형식의 자료구조 우선순위 큐는 먼저 들어오는 데이터가 아니라, 우선순위가 높은 데이터가 먼저 나가는 형태의 자료구조 일반적으로 heapq로 구현 파이썬 라이브러리 PriorityQueue 파이썬 우선순위 큐 구현에서 heapq가 PriorityQueue보다 실행시간이 적게 걸려 heapq를 일반적으로 많이 사용 또, PriorityQueue와 heapq는 최소 힙만 다룰 수 있기 때문에 큰 수부터 pop 하고싶을 때는 - 부호를 붙혀 push heappush()와 heappop() 모두 O(logN)의 시간복잡 q = PriorityQueue() q.put((0,k)..
[1753번] 최단경로 구하기 (다익스트라, 우선순위큐, 힙)
·
Coding Test/Graph
다익스트라 음수간선 X S 시작점부터 다른 모든 노드로 가는 최단거리 구하는 알고리즘 기출 : 음수간선이 없는데 시작점이 있고 최단거리 구하는 문제 원리 최단거리를 구할 노드에서 시작하여 거리가 입력된 노드 중 최단거리가 가장 작은 노드를 돌아가며 선택 노드를 돌아가면서, 더 거리가 나오면 값 갱신하여 저장 우선순위 큐 파이썬 우선순위 큐, 힙 우선순위 큐(Priority Queue) 큐(Queue)는 먼저 들어오는 데이터가 먼저 나가는 FIFO(First In First Out) 형식의 자료구조 우선순위 큐는 먼저 들어오는 데이터가 아니라, 우선순위가 높은 데이터가 먼저 나 karla.tistory.com 풀이 (PriorityQueue) import sys from queue import Priori..