algorithm'''problem solve
[프로그래머스] 무지의 먹방 라이브 (그리디)
JunHwa Park
2020. 9. 28. 22:46

코딩테스트 연습 - 무지의 먹방 라이브
programmers.co.kr
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
|
import heapq
def solution(food_times, k):
q = list()
size = len(food_times)
for i in range(size):
heapq.heappush(q, (food_times[i], i + 1))
previous = 0
while q:
time, num = heapq.heappop(q)
time_sum = size * (time - previous)
if k >= time_sum:
k -= time_sum
previous = time
size -= 1
else:
arr = [num]
while q:
t, n = heapq.heappop(q)
arr.append(n)
arr.sort()
k %= size
return arr[k]
return -1
|
cs |
그리디 문제이다. 근데 그리디 치고는 꽤나 난이도가 있다. 카카오 공채 코테 기출인데 역시 카카오인가..??
우선순위 큐를 이용해서 가장 먹는데 시간이 적게 걸리는 음식부터 먹어치운다. 물론 가능하다는 전제하에.
그리고 남은걸 다 먹지 못할 경우, 남은 음식들을 번호순으로 정렬해서 그 차례의 음식을 먹으면 된다.