[Algorithm] 백준_2056번: 작업
업데이트:
3일 전부터 하루에 한 문제씩 남자친구랑 같이 풀고 있다!
오늘의 문제는 🚀백준 2056번: 작업이다.
테스트케이스 그림그리고 이해하는데 오래 걸려서, 이럴려면 되려나 하고 코드 썼는데 한번에 풀렸다~! 만세~!
테스트케이스 이해하기
테스트 케이스를 이해하고자 그림을 그려봤다.
그리다가 느낀게 앞에서 부터 차근차근 계산하면 되겠다라는 생각이들었다.
알고리즘
-
각 작업이 끝나는 시간을 계산해 놓기 위한 배열을 할당한다.
-
차례대로 자신이 걸리는 시간을 계산해서 저장한다.
⇒자신의 선행 관계 목록 중 가장 큰 값 뒤에 자신의 값을 더한 시간이 자신이 걸리는 시간!
-
배열에서 가장 큰 값이 답!
정답코드
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번: 작업