[ BOJ / Python ] 8980번 택배

황승환·2022년 5월 23일
0

Python

목록 보기
309/498


이번 문제는 그리디 알고리즘을 통해 해결하였다. 우선 택배 정보를 정렬해야 했는데, 처음에는 시작점과 끝점을 기준으로 오름차순 정렬하였다. 그러나 이렇게 정렬할 경우, 그 사이에 시작점과 끝점이 존재하는 택배들을 놓치게 되므로, 정렬을 끝점 기준으로만 오름차순 정렬하였다. 그리고 정렬된 택배 정보를 순회하며 가능한 택배량을 싣고 결과값에 더하는 방식으로 접근하여 해결하였다.

Code

n, c=map(int, input().split())
m=int(input())
infos=[list(map(int, input().split())) for _ in range(m)]
infos.sort(key=lambda x:x[1])
box=[c for _ in range(n+1)]
answer=0
for s, e, b in infos:
    tmp=c
    for i in range(s, e):
        tmp=min(tmp, box[i])
    tmp=min(tmp, b)
    for i in range(s, e):
        box[i]-=tmp
    answer+=tmp
print(answer)

profile
꾸준함을 꿈꾸는 SW 전공 학부생의 개발 일기

0개의 댓글