프로그래밍/코딩테스트 공부
[이코테] 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시간만에 풀었다. ㅠㅠ 역시 카카오 코테는 어려워...
답을 보니 우선순위 큐를 사용하는 것 같다. 흠... 역시 알고리즘을 잘 알아야 ㅠㅠ