[백준] 8980번 택배 (파이썬)

dongEon·2023년 5월 1일
0

난이도 : GOLD II

문제링크 : https://www.acmicpc.net/problem/8980

문제해결 아이디어

  • 그리디 알고리즘이다.
  • 처음에는 시작점, 도착점을 기준으로 정렬을 했는데 도착점만을 기준으로 정렬을 해야했다.
  • 1->5를 먼저하면 2->3, 3->4 와 같은 애들은 못할 수 있기 때문이다.

소스코드

import sys

input = sys.stdin.readline

n,w = map(int,input().split())

k = int(input())
town = []
for _ in range(k):
  #보내는 마을, 받는 마을, 박스 개수
  town.append(list(map(int,input().split())))

town.sort(key=lambda x:x[1])

box = [w] * (n+1)

total = 0

for s,e,b in town:
  _min = b
  for i in range(s,e): #싣을 수 있는 무게 구하기 # box[e] 는 어차피 다시 더해야 하므로 포함x
    _min = min(_min, box[i])

  for i in range(s,e): #모든 마을 box 무게 변경
    box[i] -= _min

  total += _min

print(total)
profile
반갑습니다! 알고리즘 문제 풀이 정리 블로그 입니다. 피드백은 언제나 환영입니다!

0개의 댓글