-
[백준] 8980번: 택배(Python)Algorithm PS👩🏻💻/백준 2023. 7. 6. 11:32
1. 문제 링크
https://www.acmicpc.net/problem/8980
8980번: 택배
입력의 첫 줄은 마을 수 N과 트럭의 용량 C가 빈칸을 사이에 두고 주어진다. N은 2이상 2,000이하 정수이고, C는 1이상 10,000이하 정수이다. 다음 줄에, 보내는 박스 정보의 개수 M이 주어진다. M은 1이
www.acmicpc.net
2. 풀이
1) 풀이 설명
- 빠른 도착지의 짐 부터 싣는데 최적해라는 것
- 도착지를 기준으로 s-r 까지 가장 많이 실을 수 있는 짐의 양을 재는 것이다.- 도착지를 기준으로 오름차순으로 정렬한다.
- 시작부터 도착지 범위에서 min(남은 트럭 용량(capa), 박스 크기(box)) 을 골라서 가장 작은 값을 넣는 것이다.
- 이때 박스 크기는 달라지지 않지만, 범위 내에서의 택배 용량은 다 다를 수 있으므로 비교해주는 것
- 택배에 싣는 박스 크기는 각 마을의 트럭 용량에서 빼준다.
2) 풀이 코드
import sys input = sys.stdin.readline N, C = map(int, input().split()) m = int(input()) infos = [] for _ in range(m): s, r, box = map(int, input().split()) infos.append((s, r, box)) capa = [C] * (N+1) # 각 마을 별 남은 트럭 용량 total = 0 infos.sort(key=lambda x: x[1]) for s, r, box in infos: min_value = C for i in range(s, r):# box 크기는 변하지 않지만, 범위 내에 트럭 용량을 비교하는 것 if min_value > min(capa[i], box): min_value = min(capa[i], box) for i in range(s, r): capa[i] -= min_value total += min_value print(total)
* 풀이 참고
모르겠어서 풀이 참조함 ㅠ [출처]: https://ddiyeon.tistory.com/36
'Algorithm PS👩🏻💻 > 백준' 카테고리의 다른 글
[백준] 1182번: 부분수열의 합(Python, Backtracking) (0) 2023.07.11 [백준] 1764번: 듣보잡(Python) (0) 2023.07.06 [백준] 19598번: 최소 회의실 개수(Python, 그리디) (0) 2023.07.05 [백준] 5430번: AC (Python) (0) 2023.06.28 [백준] 3079번: 입국심사(이분탐색, Python) (0) 2023.05.30