[백준] 작업 복기

김지민·2022년 5월 13일
0

자료구조

목록 보기
5/6

문제

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

왜 한번에 풀지 못했는가?

문제를 제대로 읽지 않았다.

들어는 노드인지 나는 노드인지 주어진 값들의 구분을 제대로 하지 않았다.
왜 안했는가..?
내 예상이 당연히 맞을 것이라 생각한 착각이다.
나는 항상 틀릴 수 있다 확인을 필 수 적으로 하기
어렴풋한 어리짐작으로 풀지말기

주어진 조건을 제대로 파악하지 못했다.

하나 이상이라면 한개 보다 많다는 것을 의미한다.
이를 빼먹었다.

파이썬 이차원 정렬 다시 한번 정리

list.sort(key=lambda: x[1],reverse)

리스트.sort(key) 순이다.

풀이

# 모든 작업을 완료하기 위해 필요한 최소 시간을 구하여라
# 두번째 줄부터 N+1번째 줄까지 N개의 줄이 주어진다.
# 시간, 갯수, 선행 관계에 있는 작업들의 번호


N = int(input())
graph = []
in_cnt = [0]* (N+1)
time = [0]*(N+1)
graph = [[] for _ in range(N+1)]
wait = []

for i in range(N):
    li = list(map(int, input().split()))

    time[i+1] = li[0]
    in_cnt[i+1] = li[1]
    if in_cnt[i+1] == 0:
        wait.append([i+1, time[i+1]])
    for j in range(li[1]):
        graph[li[2+j]].append(i+1)





while wait:
    wait.sort(key=lambda x: x[1], reverse=True)

    top = wait.pop()

    for g in graph[top[0]]:
        in_cnt[g] -= 1
        if in_cnt[g] == 0:
            wait.append([g, top[1]+time[g]])

print(top[1])
profile
💡Habit is a second nature. [Git] https://github.com/Kimjimin97

0개의 댓글