그리디
문제에 해당한다.
문제를 이해해보면, 박스를 배달하거나 수거한 부분에 대해서 리스트를 업데이트 해줄 필요는 없다. (처음에 이런 식으로 풀이했다가 시간 초과가 발생했다 .. ^^)
즉, 간단하게 가장 먼 거리에서부터 고려하는 과정으로 문제를 해결해나갈 수 있다!
아래 해설 내용이 헷갈리면 주석 처리해둔 부분을 풀고 돌려보면 감이 잡힐 것이다!
# cap : 한 번에 들고 갈 수 있는 택배 상자
# n : 집의 개수
def solution(cap, n, deliveries, pickups):
answer = 0
deliver = 0
pickup = 0
for i in range(n-1, -1, -1):
deliver += deliveries[i]
pickup += pickups[i]
#print(f"index : {i}, deliver: {deliver}, pickup: {pickup}")
# 배달 해주거나 / 수거 해주기
while deliver > 0 or pickup > 0:
deliver -=cap
pickup -= cap
#print(deliver, pickup, i)
answer += (i+1)*2
#print(answer)
return answer
📌 해결 방법