https://programmers.co.kr/learn/courses/30/lessons/42891
저번에 못푼 문제 풀기..
from operator import itemgetter
def solution(food_times, k):
foods = []
for i in range(len(food_times)):
foods.append([food_times[i], i])
foods.sort()
pretime = 0
n = len(food_times)
for i in range(len(food_times)):
time = foods[i][0] - pretime
if time != 0:
spend = time * n
if spend <= k:
k -= spend
pretime = foods[i][0]
else:
k %= n
sublist = sorted(foods[i:], key=itemgetter(1))
return sublist[k][1] + 1
n -= 1
return -1
print(solution([3,1,2], 5))
음식양이 적은순으로 정렬하면 가장 작은 음식량을 기준으로 한줄씩 없앨수잇다. 음식양과 인텍스가 같이 움직일 수 있도록 설정해줘야한다. -> 2차원 배열
2번째 음식양과 3번째 음식양이 같다면?
1,3,3,5 이런경우
pretime = 0을 두고 이전의 음식양을 얻는다.
time = foods[i][0] - pretime 지금음식양과 이전 음식양을 비교한다.
0이면 넘어가고 0이 아니면 먹어치운다.
한 접시 음식을 다 먹어치우면?
n = len(food_times)
처음엔 모든 음식접시 존재
다먹으면 n -= 1 접시 치워줌
k가 5인데 한줄에 남은 음식이 5초과면?
음식량이 더 크면
현재 음식접시 개수를 k로 나눠 나머지 계산
5%6=1
sublist = sorted(foods[i:], key=itemgetter(1))
현재 남은 음식접시부터 인덱스 순으로 정렬
return sublist[k][1] + 1
알고리줌님 안녕하세요 파파이썬입니다
문제 설계방법도 직접 올려서 어려웠던 문제를 다른 방법으로 풀어보는 것도 복습하는데 정말 좋은 방법인것 같아요!
잘 보고 갑니다! 한주동안 고생하셨습니다