일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- HUFS 모각코 캠프
- 머신러닝과 딥러닝
- 백준 1987
- 깃헙
- 그리디
- 명품자바
- 다이나믹프로그래밍
- 자바
- 알고리즘
- 백준 2512번
- Python
- 백준 3085번
- javascript
- 백준 15787번
- 백준 16918번
- 백준 1253번
- MySQL
- 백준 18310번
- SQL
- java_programming
- 다이나믹 프로그래밍
- 백준
- react
- 모각코
- SWEA 15612번
- AWS
- 백준 17451번
- ubuntu
- 그래프
- 백준 1331번
Archives
- Today
- Total
차곡차곡
[프로그래머스/Python] 택배 배달과 수거하기 본문
프로그래머스 - 택배 배달과 수거하기
# 맨 마지막 집부터 방문하면서 방문할 때 모든 배달과 수거가 0이 되도록
def solution(cap, n, deliveries, pickups):
answer = 0
deliver = 0 # 남은 배달 가능 개수
pick = 0 # 남은 수거 가능 개수
for i in range(n-1, -1, -1):
cnt = 0
while deliver < deliveries[i] or pick < pickups[i]:
cnt += 1
deliver += cap
pick += cap
deliver -= deliveries[i]
pick -= pickups[i]
answer += (i + 1) * cnt
return answer * 2
- i번째 집에 택배를 배달하고 수거하기 위해서는 i까지 무조건 가야 한다.
- 마지막 집부터 방문을 하면서 각각의 집을 방문할 때 모든 택배를 배달/수거 한다.
- 현재 배달/수거 가능한 택배 개수를 각각 deliver, pick 변수에 저장한다.
- 배송/수거를 하면서 이동한 거리를 answer 변수에 저장한다.
- 각각의 집에서 택배를 배달/수거 하는 데 필요한 배달/수거 개수가 잔여 배달/수거 택배 개수(deliver, pick) 보다 클 경우, 해당 집까지 한 번 더 와야 함을 의미한다.
- 따라서 잔여 개수가 커질 때까지 물류창고에서 해당 집까지 왔다 갔다 해야 한다. 몇 번 왔다 갔다 해야 하는지 횟수를 cnt 변수에 저장한다.
- 해당 위치까지 이동한 횟수(cnt)를 구해준 뒤 answer에 더해준다.
'CS > Algorithm' 카테고리의 다른 글
[BOJ/Python, Javascript] 백준 5073번 - 삼각형과 세 변 (0) | 2023.05.13 |
---|---|
[프로그래머스/Python] 성격 유형 검사하기 (0) | 2023.05.09 |
[프로그래머스/Python] 방문 길이 (0) | 2023.04.28 |
[BOJ/Python] 백준 23971번 - ZOAC 4 (2) | 2023.02.16 |
[SWEA/Python] SW Expert Academy 5215번 - 햄버거 다이어트 (0) | 2022.11.20 |
Comments