heapq 8

[프로그래머스] 야근 지수 by 파이썬 (Python)

https://school.programmers.co.kr/learn/courses/30/lessons/12927 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 난이도 LV 3 문제 설명 해야할 일이 works 배열에 각 일에 대한 필요 작업량이 저장되어 있다. 1시간에 작업량 1만큼을 할 수 있다. 퇴근 시간까지 남은시간 n 이 주어진다. 야근피로도는 퇴근 시간 이후 각 일의 남은 작업량의 제곱의 합이다. 가장 적은 야근 피로도를 계산해서 Return 해야한다. 접근 법 야근 피로도를 가장 낮추는 방법은 모든 일의 작업량을 균등하게 낮추는 것이다. 남은..

[프로그래머스] 이중 우선 순위 큐 by 파이썬 (Python) : heap

https://school.programmers.co.kr/learn/courses/30/lessons/42628?language=python3 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 난이도 LV 3 문제 설명 I 숫자 형태일때는 큐에 해당 숫자를 삽입한다. D 1 형태일때에는 큐에서 최댓값을 삭제한다. D -1 형태일때에는 큐에서 최솟값을 삭제한다. 만약 큐가 비어있다면 [0,0] 출력 아니라면 [최대값, 최소값] return 해준다. 접근법 시간을 최대한 줄이기 위해 항상 맨 앞이 최소가 되는 heapq를 사용한다. 파이썬은 문자열에 문자를 인..

[프로그래머스] 호텔 대실 LV2 by 파이썬 (python)

https://school.programmers.co.kr/learn/courses/30/lessons/155651 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 이해 1. 최소한의 객실만을 사용하여 예약손님 받기 2. 퇴실 기준 10분이후에 다음 손님 사용 가능 3. 00:00 ~ 23:59 접근법 1. heapq를 사용하여 객실의 끝나는 시간을 저장하기 2. 가장 빨리 끝나는 시간과 다음 이용자의 시작 시간을 비교 3. 다음 이용자의 시작시간이 더 느리다면 같은 객실을 이용 가능한 것 => heappop으로 앞의 시간 제거 4. 마지막에 heap..

[baekjoon] 백준 1238번 : 파티 (by python 파이썬) 다익스트라 최단경로, heapq

https://www.acmicpc.net/problem/1238 1238번: 파티 첫째 줄에 N(1 ≤ N ≤ 1,000), M(1 ≤ M ≤ 10,000), X가 공백으로 구분되어 입력된다. 두 번째 줄부터 M+1번째 줄까지 i번째 도로의 시작점, 끝점, 그리고 이 도로를 지나는데 필요한 소요시간 Ti가 들어 www.acmicpc.net 정답 code #파티 import heapq import sys input = sys.stdin.readline INF = int(1e9) #무한 설정 n,m,x = map(int,input().split()) road = [[] for _ in range(n+1)] for _ in range(m): s,e,time = map(int,input().split()) r..

[baekjoon] 백준 11286번 : 절대값 힙 (by python 파이썬) heapq(튜플)

https://www.acmicpc.net/problem/11286 11286번: 절댓값 힙 첫째 줄에 연산의 개수 N(1≤N≤100,000)이 주어진다. 다음 N개의 줄에는 연산에 대한 정보를 나타내는 정수 x가 주어진다. 만약 x가 0이 아니라면 배열에 x라는 값을 넣는(추가하는) 연산이고, x가 0 www.acmicpc.net 정답 code #절대값 힙 import sys import heapq input = sys.stdin.readline heap = [] n = int(input()) for i in range(n): x = int(input()) if x == 0: if not heap: print(0) else: print(heapq.heappop(heap)[1]) else: heapq.h..

[baekjoon] 백준 11279번 : 최대 힙 (by python) heapq

https://www.acmicpc.net/problem/11279 11279번: 최대 힙 첫째 줄에 연산의 개수 N(1 ≤ N ≤ 100,000)이 주어진다. 다음 N개의 줄에는 연산에 대한 정보를 나타내는 정수 x가 주어진다. 만약 x가 자연수라면 배열에 x라는 값을 넣는(추가하는) 연산이고, x가 www.acmicpc.net 정답 code #최대 힙 import heapq import sys input = sys.stdin.readline arr = [] n = int(input()) for i in range(n): x = int(input()) if x == 0: if arr: print(-heapq.heappop(arr)) else: print(0) else: heapq.heappush(arr..

[baekjoon] 백준 7662번 : 이중 우선순위 큐 (by python 파이썬) 이중 힙큐

https://www.acmicpc.net/problem/7662 7662번: 이중 우선순위 큐 입력 데이터는 표준입력을 사용한다. 입력은 T개의 테스트 데이터로 구성된다. 입력의 첫 번째 줄에는 입력 데이터의 수를 나타내는 정수 T가 주어진다. 각 테스트 데이터의 첫째 줄에는 Q에 적 www.acmicpc.net 정답 code #이중 우선순위 큐 import heapq import sys input = sys.stdin.readline t = int(input()) for _ in range(t): k = int(input()) q_max, q_min = [], [] visited = [False]*k for i in range(k): s, n = input().split() if s == 'I': h..

카테고리 없음 2022.06.04

[baekjoon] 백준 1927번 : 최소 힙 (by python 파이썬) with heapq

https://www.acmicpc.net/problem/1927 1927번: 최소 힙 첫째 줄에 연산의 개수 N(1 ≤ N ≤ 100,000)이 주어진다. 다음 N개의 줄에는 연산에 대한 정보를 나타내는 정수 x가 주어진다. 만약 x가 자연수라면 배열에 x라는 값을 넣는(추가하는) 연산이고, x가 0 www.acmicpc.net 정답 code import heapq import sys input = sys.stdin.readline n = int(input()) heap = [] for _ in range(n): x = int(input()) if x == 0: if len(heap) == 0: print(0) else: print(heapq.heappop(heap)) else: heapq.heappu..