백준 & 프로그래머스
[프로그래머스] 택배 배달과 수거하기 - python
hyukji
2023. 4. 25. 00:59
문제출처
https://school.programmers.co.kr/learn/courses/30/lessons/150369
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
문제 풀이 및 코드
해당 문제는 주된 내용은 배달과 픽업을 위해 이동해야하는 거리를 구하는 것이다. 조건에 의하면, 집마다 거리는 1이고 한번에 이동할 수 있는 용량이 존재한다.
이를 위해서는 멀리있는 집부터 배달과 픽업을 완료해야한다. 가장 먼 거리부터 배달을 완료하고 배달하러 가는 길에 가장 먼거리부터 픽업을 해와야한다. 필자는 stack을 이용했다. input으로 들어온 deliveries와 pickups를 stack처럼 생각해 먼거리 부터 배달, 픽업을 하고 배달이나 픽업을 할 때 완료하면 그만큼을 pop해주는 방식을 이용해 먼 거리부터 배달과 픽업을 진행했다.
스택을 이용하여 푸는 방식은 여러 방식이 있겠지만 필자는 while문을 이용했다. 따라서 처음에 deliveries와 pickups의 크기 즉 어레이들의 크기를 체크해 가장 먼 거리를 확인한 후에 배달용량만큼 pop을 시켜주고 또 어레이들의 마지막 원소가 0이 오지 않도록 pop을 했다. 0이 오지 않도록 한 이유는 다음 배달을 위해 최대거리를 구할 때 어레이의 길이를 가져와 간편하게 하기 위해서 였다. 자세한 내용은 코드에 주석을 첨부하였다.