주문 박스들을 카트 한 대에 담고 다닐 때, 어느 박스를 함께 담고 어떤 순서로 돌면 가장 적게 걷는지 정하는 모델입니다. 목적은 존 수 → 통로 수 → 이동 시간의 사전식 순서로 줄이는 것이고, 모든 계산은 이 페이지 안에서 바로 돌아갑니다.
레시피에 적힌 핵심 알고리즘을 그대로 옮긴 것이고, 도면·주문·로케이션 이름은 전부 이 페이지가 생성합니다. 실제 센터의 도면이나 데이터, 식별자는 들어 있지 않습니다.
카트 한 대의 비용은 (존 수, 통로 수, 이동 시간) 묶음입니다. 존 수가 작으면 이동 시간이 좀 길어도 이기고, 존 수가 같을 때만 통로 수를, 그것도 같을 때 이동 시간을 봅니다. 모든 비교와 교환이 이 순서를 따릅니다.
통로 안에서는 스윕 DP로 돕니다: 먼 쪽으로 가는 체인과 되돌아오는 체인을 하나씩만 두고, 축 좌표 차이가 3.9칸 이내인 픽은 순서를 바꿔도 되게 허용합니다. 통로 사이는 통로 순서 DP가 존을 한 번만 들어가고 존 안에서는 한 방향으로만 지나가도록 상태 (방문 존 집합, 진행 방향, 끝 픽)을 둡니다.
박스 풀에서 카트를 채울 수 있는 최소 통로 집합을 완전탐색(동률 32개까지)으로 찾고, 그 통로 안의 박스를 가까운 순서로 담습니다. 뒤따를 카트 2대를 미리 구성해 셋을 정수계획으로 다시 나눠 보고, 더 좋을 때만 받아들인 뒤 추가·이동·맞교환으로 20회까지 개선합니다. 응답은 1번 카트 하나입니다.
박스를 존 집합별로 모아 통로 ≤ 4개로 카트 한 대(12박스)를 채우는 trip을 만들고, trip 사이에서 박스를 맞바꿔 (존, 통로, 이동) 합을 줄입니다. 마지막으로 작업자 K명에게 돌아가며 투입할 때 같은 시간대에 같은 통로·로케이션에 겹치는 일이 적도록 순서를 정합니다.