진박사의 일상

[이코테] Greedy 문제 - 6. 무지의 먹방 라이브 본문

프로그래밍/코딩테스트 공부

[이코테] Greedy 문제 - 6. 무지의 먹방 라이브

진박사. 2021. 9. 6. 03:08

문제 : 1~N까지의 각기 양이 다른 음식을 1초마다 순서대로 돌아가며 먹을 때 K초 후에 먹게 될 음식의 번호는? (단, 다 먹으면 남아있는 다음 음식으로 넘어감, K초 전에 다 먹으면 -1)

 

def solution(food_times, k):

    n = len(food_times)
    index = 0
    if sum(food_times) <= k:
            return -1
    if min(food_times)*n <= k:
        k -= min(food_times)*n
        food_times = [i - min(food_times) for i in food_times]
    while True:
        if food_times[index] != 0:
            if k == 0:
                break
            food_times[index] -= 1
            k -= 1
        index += 1
        if index == n:
            index = 0
    
    if index != -1:
        index += 1
    return index

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

 

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

 

programmers.co.kr

에서 테스트 해본 결과 정확성 테스트는 다 성공했지만 효율성 테스트를 다 실패해서 42.9점...

그마저도 시행착오를 거듭하며 1시간만에 풀었다. ㅠㅠ 역시 카카오 코테는 어려워...

 

답을 보니 우선순위 큐를 사용하는 것 같다. 흠... 역시 알고리즘을 잘 알아야 ㅠㅠ