Algorithm/📊 Problem Solving

[백준/BOJ] 8980 - 택배

posted by sangmin

8980번 - 택배

문제

아래 그림과 같이 직선 도로상에 왼쪽부터 오른쪽으로 1번부터 차례대로 번호가 붙여진 마을들이 있다.
마을에 있는 물건을 배송하기 위한 트럭 한 대가 있고, 트럭이 있는 본부는 1번 마을 왼쪽에 있다.
이 트럭은 본부에서 출발하여 1번 마을부터 마지막 마을까지 오른쪽으로 가면서 마을에 있는 물건을 배송한다.

각 마을은 배송할 물건들을 박스에 넣어 보내며, 본부에서는 박스를 보내는 마을번호, 박스를 받는 마을번호와 보낼 박스의 개수를 알고 있다.
박스들은 모두 크기가 같다. 트럭에 최대로 실을 수 있는 박스의 개수, 즉 트럭의 용량이 있다.
이 트럭 한대를 이용하여 다음의 조건을 모두 만족하면서 최대한 많은 박스들을 배송하려고 한다.

  • 조건 1: 박스를 트럭에 실으면, 이 박스는 받는 마을에서만 내린다.
  • 조건 2: 트럭은 지나온 마을로 되돌아가지 않는다.
  • 조건 3: 박스들 중 일부만 배송할 수도 있다.

마을의 개수, 트럭의 용량, 박스 정보(보내는 마을 번호, 받는 마을번호, 박스 개수)가 주어질 때,
트럭 한 대로 배송할 수 있는 최대 박스 수를 구하는 프로그램을 작성하시오. 단, 받는 마을번호는 보내는 마을번호보다 항상 크다.

코드

한마디

딱 하나의 반례만 해결하면 됐는데, 그걸 못해서 전전긍긍한 문제다. 도착 지점이 가까운 순으로 정렬한 뒤 트럭이 배달하도록 했다.
하지만 이 조건만 들고있으면 지나치는 마을이 생겨 구간마다 트럭에 더 실을 수 있는 경우에 추가해줬다.

 

8980번: 택배

입력의 첫 줄은 마을 수 N과 트럭의 용량 C가 빈칸을 사이에 두고 주어진다. N은 2이상 2,000이하 정수이고, C는 1이상 10,000이하 정수이다. 다음 줄에, 보내는 박스 정보의 개수 M이 주어진다. M은 1이

www.acmicpc.net

 

'Algorithm > 📊 Problem Solving' 카테고리의 다른 글

[백준/BOJ] 10773 - 제로  (0) 2021.01.16
[백준/BOJ] 7568 - 덩치  (0) 2021.01.16
[백준/BOJ] 17262 - 팬덤이 넘쳐흘러  (0) 2021.01.16
[백준/BOJ] 7570 - 줄 세우기  (0) 2021.01.16
[백준/BOJ] 1920 - 수 찾기  (0) 2021.01.16