본문 바로가기
알고리즘/BOJ

[Python] 백준 2056번: 작업

by PIAI 2021. 10. 6.

https://www.acmicpc.net/problem/2056

 

2056번: 작업

수행해야 할 작업 N개 (3 ≤ N ≤ 10000)가 있다. 각각의 작업마다 걸리는 시간(1 ≤ 시간 ≤ 100)이 정수로 주어진다. 몇몇 작업들 사이에는 선행 관계라는 게 있어서, 어떤 작업을 수행하기 위해

www.acmicpc.net

1. 위상 정렬이다. 각 노드마다 최소비용을 구하는 dp 문제이다.

2. 이전 노드들 중에 가장 큰 비용을 현재 노드의 비용과 더해간다.

3. dp 중에 가장 큰 값이 ans다

n = int(input())
dp = [0 for _ in range(n+1)]
graph = [[] for _ in range(n+1)]
for i in range(1, n+1):
    cost, m, *lst = map(int, input().split())
    dp[i] = cost
    for x in lst:
        graph[i].append(x)

for i in range(1, n+1):
    tmp = 0
    for j in graph[i]:
        tmp = max(tmp, dp[j])
    dp[i] += tmp
print(max(dp))

'알고리즘 > BOJ' 카테고리의 다른 글

[Python] 백준 17404번: RGB거리 2  (0) 2021.10.07
[Python] 백준 4811번: 알약  (0) 2021.10.07
[Python] 백준 20040번: 사이클 게임  (0) 2021.10.06
[Python] 백준 9084 동전  (0) 2021.10.05
[Python] 백준 7579: 앱  (0) 2021.10.04

댓글