forked from ndb796/python-for-coding-test
-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy path6.py
27 lines (22 loc) Β· 1.11 KB
/
6.py
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
import heapq
def solution(food_times, k):
# μ 체 μμμ λ¨Ήλ μκ°λ³΄λ€ kκ° ν¬κ±°λ κ°λ€λ©΄ -1
if sum(food_times) <= k:
return -1
# μκ°μ΄ μμ μμλΆν° λΉΌμΌ νλ―λ‘ μ°μ μμ νλ₯Ό μ΄μ©
q = []
for i in range(len(food_times)):
# (μμ μκ°, μμ λ²νΈ) ννλ‘ μ°μ μμ νμ μ½μ
heapq.heappush(q, (food_times[i], i + 1))
sum_value = 0 # λ¨ΉκΈ° μν΄ μ¬μ©ν μκ°
previous = 0 # μ§μ μ λ€ λ¨Ήμ μμ μκ°
length = len(food_times) # λ¨μ μμμ κ°μ
# sum_value + (νμ¬μ μμ μκ° - μ΄μ μμ μκ°) * νμ¬ μμ κ°μμ k λΉκ΅
while sum_value + ((q[0][0] - previous) * length) <= k:
now = heapq.heappop(q)[0]
sum_value += (now - previous) * length
length -= 1 # λ€ λ¨Ήμ μμ μ μΈ
previous = now # μ΄μ μμ μκ° μ¬μ€μ
# λ¨μ μμ μ€μμ λͺ λ²μ§Έ μμμΈμ§ νμΈνμ¬ μΆλ ₯
result = sorted(q, key=lambda x: x[1]) # μμμ λ²νΈ κΈ°μ€μΌλ‘ μ λ ¬
return result[(k - sum_value) % length][1]