heapq2 [백준 1655번] 가운데를 말해요 https://www.acmicpc.net/problem/1655import sys import heapq input = sys.stdin.readline # 정수를 하나씩 외칠때마다 지금까지 말한 수 중에서 중간값을 출력 # 짝수개라면 중간에 있는 두 수 중에서 작은 수 n = int(input()) heap1 = [] # 중간값을 포함한 이전 값 최대힙 heap2 = [] # 중간값 이후의 값 최소힙 for i in range(n): num = int(input()) if len(heap1) == len(heap2): heapq.heappush(heap1,-num) else: heapq.heappush(heap2,num) if heap2 and heap2[0] < -heap1[0]: lvalue = .. 2024. 7. 8. [프로그래머스 PCCP 모의고사 2번] 신입사원 교육 import heapq def solution(ability,number): # 신입사원 2명 선발, 선발 후 같이 공부시킴 # 모든 신입사원의 능력치는 정수로 표현 # 2명이 같이 공부하면 서로의 능력을 흡수하여 두 신입사원의 능력치는 # '공부하기 전 두 사람의 능력치의 합'이 됨 # 교육 후 모든 신입사원의 능력치의 합을 최소화 # 최솟값을 pop하는 시간복잡도를 최소화 하기위해 heapq 사용 q = [] for item in ability: heapq.heappush(q,item) for i in range(number): a = heapq.heappop(q) b = heapq.heappop(q) heapq.heappush(q,a+b) heapq.heappush(q,a+b) return sum(q) 2023. 11. 11. 이전 1 다음