Update history:
- 2024/07/15 - 순위계산 시 목적함수 비교 기준관련 내용 추가
- 2024/06/25 - 리더보드 업데이트 기준관련 설명 추가
- 2024/06/21 - 문제 json 포멧 설명 추가
- 2024/05/08 - 알고리즘 소스 코드 표절 검사 관련 내용 추가
0. 용어 설명
- 배달원(rider)
- 배달 음식을 매장에서 찾아 주문한 고객에게 배달하는 사람을 의미합니다.
- 픽업(pickup)
- 매장에서 고객의 주문을 인계 받는 것을 말합니다.
- 배달(delivery)
- 매장에서 인계 받은 고객의 주문을 고객이 요청한 위치에 전달하는 것을 뜻합니다.
- 준비시각(readytime)
- 고객의 주문이 준비되는 시각 = 고객이 주문을 하는 시각 (OT) + 주문이 매장에서 준비 되는 시간 (RT)
- 배달한계시각(deadline) - DT
- 고객에게 배달해야 하는 한계시각을 뜻합니다. 이 시각 이전에 배달원은 고객에게 도착하여 주문을 배달 완료해야 합니다.
- 묶음 배송(bundle delivery)
- 여러 개의 주문을 묶어 한 명의 배달원이 한꺼번에 배달하는 것을 말합니다.
1. 문제 상황
1.1. 주문
음식 주문 많이 해 보셨죠? 음식을 배달앱(App)을 통해 주문하면 다음과 같은 주문 정보가 생성되게 됩니다.
하나의 주문을 하나의 배달원이 배달하는 것은 비용적으로 효율적이지 않습니다.
배달 업체는 비슷한 시점에 발생하는 여러 주문들을 묶어 필요한 배달원의 수를 줄여 배달 비용을
줄이고 싶어합니다.
여러분에게는 특정 지역에서 발행한 주문 목록이 주어집니다.
그러나 주문을 묶음 배송하기 위해서는 다양한 제약 사항들을 고려해야 합니다.
먼저 주문을 수행할 배달원에 대해 고려해 봅시다!