업데이트:


3일 전부터 하루에 한 문제씩 남자친구랑 같이 풀고 있다!

오늘의 문제는 🚀백준 2056번: 작업이다.

테스트케이스 그림그리고 이해하는데 오래 걸려서, 이럴려면 되려나 하고 코드 썼는데 한번에 풀렸다~! 만세~!



테스트케이스 이해하기

백준2056

테스트 케이스를 이해하고자 그림을 그려봤다.

그리다가 느낀게 앞에서 부터 차근차근 계산하면 되겠다라는 생각이들었다.



알고리즘

  1. 각 작업이 끝나는 시간을 계산해 놓기 위한 배열을 할당한다.

  2. 차례대로 자신이 걸리는 시간을 계산해서 저장한다.

    ⇒자신의 선행 관계 목록 중 가장 큰 값 뒤에 자신의 값을 더한 시간이 자신이 걸리는 시간!

  3. 배열에서 가장 큰 값이 답!



정답코드

n=int(input())
time = [0]*n #각 작업이 끝나는 시간을 계산해 놓기 위한 배열

for i in range(n):
    a = list(map(int, input().split()))
    alen = len(a)
    if i == 0 :
        time[i] = a[0]

    else:
        big = 0
        for j in range(2, alen):
            if time[a[j]-1] > big:
                big = time[a[j]-1]
        time[i] = big + a[0]

print(max(time))



🚀Reference: 백준 2056번: 작업


카테고리:

업데이트: