프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
정답 코드
def solution(cap, n, deliveries, pickups):
answer = 0
delivery = 0
pickup = 0
for i in range(n-1, -1, -1):
if deliveries[i] != 0 or pickups[i] != 0:
while delivery < deliveries[i] or pickup < pickups[i]:
delivery += cap
pickup += cap
answer += (i + 1) * 2
delivery -= deliveries[i]
pickup -= pickups[i]
return answer
문제 풀이
- answer, delivery, pickup 변수를 0으로 초기화합니다. answer 변수는 총 걸린 시간을 저장하는 변수이고, delivery와 pickup 변수는 배달과 수거한 택배의 개수를 추적하는 변수입니다.
- range(n-1, -1, -1)은 n부터 0까지 역순으로 반복하는 for 루프입니다. 이는 택배 리스트를 뒤에서부터 순회하며 배달과 수거 작업을 처리하기 위함입니다.
- if deliveries[i] != 0 or pickups[i] != 0: 조건문은 현재 위치의 택배가 배달해야 할 택배나 수거해야 할 택배가 있는지 확인합니다. 만약 둘 중 하나라도 있을 경우에만 아래의 코드를 실행합니다.
- while delivery < deliveries[i] or pickup < pickups[i]: 조건문은 현재 위치의 택배를 배달하고 수거할 때까지 반복합니다. delivery 변수와 pickup 변수가 해당 위치의 택배 개수보다 작을 때까지 반복합니다.
- delivery += cap과 pickup += cap은 용량(cap)을 더해주는 것으로, 한 번에 최대로 용량만큼 배달하고 수거하는 것을 의미합니다.
- answer += (i + 1) * 2는 배달과 수거에 걸리는 시간을 계산하여 answer 변수에 더해줍니다. (i + 1) * 2는 현재 위치의 택배 개수를 시간으로 환산한 값입니다. 배달과 수거 각각에 대해 2시간이 걸리므로 (i + 1) * 2를 더해줍니다.
- delivery -= deliveries[i]와 pickup -= pickups[i]는 배달한 택배와 수거한 택배의 개수를 각각 차감해줍니다.
- 반복이 종료되면 최종적으로 answer 변수를 반환합니다.
'Algorithm' 카테고리의 다른 글
[프로그래머스 / 파이썬] 이모티콘 할인행사 (0) | 2023.07.28 |
---|---|
[프로그래머스 / 파이썬] 양과 늑대 (0) | 2023.07.14 |
[프로그래머스 / 파이썬] 미로 탈출 명령어 (0) | 2023.07.13 |
[프로그래머스 / 파이썬] [1차] 추석 트래픽 (0) | 2023.07.13 |
[백준 / 파이썬] 15686번: 치킨 배달 (0) | 2023.07.13 |