문제 링크
https://school.programmers.co.kr/learn/courses/30/lessons/150369
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
풀이
- 그리디 문제
이동 거리를 줄이기 위해서는 가장 멀리 있는 것부터 해결해야한다.
따라서 배달해야하는 택배 수와 수거해야하는 택배수를 더하고,
해당 위치를 방문하지 않아도 될 때까지 cap의 수만큼 빼준다.
-> 왕복 이동하는 것을 의미하므로, 왕복 이동 거리를 더해준다.
음수 값이어도 다음에 배달 & 수거할 택배들에 의해서 채워진다.
def solution(cap, n, deliveries, pickups):
answer = 0
d = 0
p = 0
# 먼 거리에 있는 택배부터
for i in range(n-1, -1, -1):
d += deliveries[i]
p += pickups[i]
# 더이상 해당 위치까지 방문하지 않아도 될때까지 갱신
while d > 0 or p > 0 :
d -= cap
p -= cap
answer += (i+1) * 2
return answer
'개발 > algorithm' 카테고리의 다른 글
[프로그래머스][level3] 코딩 테스트 공부 - python (0) | 2023.01.17 |
---|---|
[프로그래머스][level2] 이모티콘 할인 행사 - python (0) | 2023.01.16 |
[코드 트리] 꼬리잡기놀이 - python (0) | 2022.10.14 |
[백준 15685번] 드래곤 커브 - python (0) | 2022.10.13 |
[백준 12100번] 2048 (Easy) - python (0) | 2022.10.13 |