# 시간 K 초가 매개변수로 주어질 때 몇 번 음식부터 다시 섭취하면 되는지 return 하도록 solution 함수를 완성하라.
'''
K초후 몇 번 음식을 먹으면 되는지만 찾으면 되는 문제이다.
'''
def solution(food_times, k):
answer = 0
while k >= 0:
if sum(food_times) <= k: # 방송 중단 전에 다 먹어서 먹을 게 없으면
return -1 # -1 반환
rest_table = len(food_times) - food_times.count(0) # 영외에 남은 테이블
rotations = k // rest_table # 회전수
rest_rotations = k % rest_table # 회전한 나머지 수
for idx, val in enumerate(food_times):
if food_times[idx] != 0: # 다 안먹은 음식
# 하나씩 먹는것을 보는게 아니라 rotations씩 한꺼번에 계산하는 방법으로 효율성을 극대화함
food_times[idx] = val - rotations
if food_times[idx] < 0: # rotations씩 돌다가 다 먹어 버림 음수 되버림
rest_rotations -= food_times[idx] # 이제 회전한 나머지 수가
food_times[idx] = 0
k = rest_rotations
rest_table = len(food_times) - food_times.count(0) # 영외에 남은 테이블
if k + 1 <= rest_table:
for i in food_times:
answer += 1
if i != 0:
k -= 1
if k == -1:
return answer
if __name__=="__main__":
food_times = [10, 1, 30, 1000]
k = 100
print(solution(food_times, k))