새소식

반응형
Algotithms

[백준] 2056 작업

  • -
728x90
반응형

문제

  • 작업 N개와 각 작업마다 걸리는 시간이 정수로 주어진다.
  • K번 작업은 K-1번 이하의 작업 중 선행 관계의 작업을 가질 수도 있다.
  • 그 때 모든 작업을 완료하기 위한 최소 시간 구하기

 

  • 3 <= N <= 10,000
    1 <= 시간 <= 100 

 

풀이

  • dp[K] : K번 작업을 완료하기 위한 최소 시간
    • dp[1] : 첫 작업 완료 시간
    • dp[k] = 1 ~ k-1 번까지 작업까지 중 선행 관계의 작업 중 가장 오래 걸리는 시간 + k 번째 작업의 시간 

 

N = int(input())
prior = [0] + [list(map(int, input().split())) for _ in range(N)]

# dp[K] : K번 작업을 완료하기 위한 최소 시간
dp = [0] * (N+1)
dp[1] = prior[1][0]    # 첫 작업 완료 시간

for i in range(2, N+1) :
    # 선행 관계의 작업 중 가장 오래 걸리는 시간 + i번째 작업
    for k in prior[i][2:] :
        dp[i] = max(dp[i], dp[k])
    dp[i] += prior[i][0]

print(max(dp))

 

References

  • 백준 DP
반응형

'Algotithms' 카테고리의 다른 글

[백준] 16234 인구이동  (0) 2023.10.24
[백준] 4096 지뢰찾기  (0) 2023.10.24
[백준] 20365 블로그2  (1) 2023.10.23
[백준] 11066 파일 합치기  (0) 2023.10.20
[백준] 4659 비밀번호 발음하기  (1) 2023.10.20
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.