티스토리 뷰

https://programmers.co.kr/learn/courses/30/lessons/42891
 

코딩테스트 연습 - 무지의 먹방 라이브

 

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

그리디 문제이다. 근데 그리디 치고는 꽤나 난이도가 있다. 카카오 공채 코테 기출인데 역시 카카오인가..??

우선순위 큐를 이용해서 가장 먹는데 시간이 적게 걸리는 음식부터 먹어치운다. 물론 가능하다는 전제하에.

그리고 남은걸 다 먹지 못할 경우, 남은 음식들을 번호순으로 정렬해서 그 차례의 음식을 먹으면 된다.

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/12   »
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
글 보관함