[파이썬] 백준 2056번 작업

작성:

백준 #2056 작업


# N개 작업, 각 작업마다 정수의 시간이 걸린다.
# 1~K-1번 작업 중에 K번 작업의 선행 관계에 있는 작업이 있다.
# 모든 작업을 완료하기 위한 최소 시간을 구하라
# 선행 관계가 없는 작업은 동시 수행 가능.

# 출력: 모든 작업을 완료하기 위한 최소 시간

# 체크할 조건
# 3 <= N <= 10000, 1 <= t <= 100
# 선행 관계가 없는 작업은 동시 수행 가능
# 선행 관계에 있는 건 먼저 완료되어야 한다.
    # k번 작업 - 1~k-1 작업 중 x개
# 입력이 1번 작업부터 순차적으로 주어진다.

# dp[n] - n번 작업까지 모두 하는데 소요되는 시간.
# 선행 작업 중 가장 오래 걸리는 시간 + 현재 시간으로 갱신.
# max(dp) 출력

import sys
input = sys.stdin.readline

def solution(N):
    dp = [0]
    for i in range(N):
        inp = list(map(int, input().split()))
        val, num, lst = inp[0], inp[1], inp[2:]
        dp.append(val + dp[max(lst, key=lambda x: dp[x], default=0)])
    print(max(dp))

if __name__ == '__main__':
    solution(int(input()))

댓글남기기