어디까지 갈 수 있을까?

[그리디] 프로그래머스 무지의 먹방 라이브 본문

알고리즘/문제

[그리디] 프로그래머스 무지의 먹방 라이브

_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) *< 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 = 도는 횟수) 라고 생각하고 남은 시간동안 한 바퀴를 채울 수 없는 경우 순서를 반환한다고 생각하자

 

 

 

 

출처

inspirit941.tistory.com/209

bladejun.tistory.com/35

728x90
Comments