알고리즘/문제
[그리디] 프로그래머스 무지의 먹방 라이브
_Min
2021. 3. 4. 12:13
문제링크 programmers.co.kr/learn/courses/30/lessons/42891
[답코드]
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
28
29
30
31
|
import heapq
def solution(food_times, k):
q=[] #(시간, 인덱스)
for i in range(len(food_times)):
heapq.heappush(q, (food_times[i], i+1))
pre_food=0
now_food=q[0][0]
n=len(food_times)
while True:
#바퀴수당으로 생각하기
if k - (now_food - pre_food) *n < 0:
break
k-= (now_food - pre_food) * n
heapq.heappop(q)
pre_food=now_food
n-=1
# 더 섭취할 음식이 없다면 -1
if not q:
return -1
now_food = q[0][0]
idx=k%n
q.sort(key=lambda x: x[1])
answer=q[idx][1]
return answer
|
cs |
[풀이법]
k를 빨리 떨어뜨리는 것에 집중해서 풀어야 되는 문제다
(food_times = 도는 횟수) 라고 생각하고 남은 시간동안 한 바퀴를 채울 수 없는 경우 순서를 반환한다고 생각하자
출처
728x90