공부, 기록

백준 1516. 게임 개발 파이썬(PYTHON) 본문

코딩

백준 1516. 게임 개발 파이썬(PYTHON)

무는빼주세요 2020. 11. 14. 14:21

문제링크 : www.acmicpc.net/problem/1516

 

1516번: 게임 개발

첫째 줄에 건물의 종류 수 N(1 ≤ N ≤ 500)이 주어진다. 다음 N개의 줄에는 각 건물을 짓는데 걸리는 시간과 그 건물을 짓기 위해 먼저 지어져야 하는 건물들의 번호가 주어진다. 건물의 번호는 1부

www.acmicpc.net

 

def solution(lists):
    answer = [0]*len(lists)
    # 먼저 짓는게 없는 경우
    for i in range (len(lists)):
        if len(lists[i]) == 2:
            answer[i] = lists[i][0]
    while 0 in answer:
        for i in range(len(lists)):
            buildtime = lists[i][0]
            buildtimes=list()
            if answer[i] !=0:
                continue
            else:
                for j in range(1,len(lists[i])):
                    if j == len(lists[i])-1:
                        answer[i]=max(buildtimes)
                    else:
                        if answer[lists[i][j]-1]!=0:
                            buildtimes.append(buildtime+answer[lists[i][j]-1])
                        else:
                            break

    return answer


def main():
    N = int(input())
    lists = list()
    for i in range(N):
        build = list(map(int,input().split()))
        lists.append(build)
    
    answer = solution(lists)
    for i in answer:
        print(i)

main()