개발공부/[코딩테스트_SWEA]

[SWEA 5263][Python] [파이썬 S/W 문제해결 최적화] 4일차 - 그래프 최소 비용

왜지? 2022. 12. 28. 16:35
반응형

코드

## SWEA 5263
T = int(input())
for test_case in range(1, T + 1):
    N = int(input())
    arry = [list(map(int, input().split())) for _ in range(N)]
    result = -float("inf")
    dist_arry = [[float("inf")]*N for _ in range(N) ]

    for i in range(N):
        for j in range(N):
            if arry[i][j] != 0 :
                dist_arry[i][j] = arry[i][j]

    for k in range(N):
        for i in range(N):
            if i!=k :
                for j in range(N):
                    if j!=k and j!=i :
                        dist_arry[i][j] = min( dist_arry[i][j], dist_arry[i][k]+dist_arry[k][j] )

    for i in range(N) :
        for j in range(N) :
            if dist_arry[i][j] != float("inf") and result < dist_arry[i][j] :
                result = dist_arry[i][j]

    print(f"#{test_case} {result}")

 

풀이

일반적인 그래프 최소 비용 산출 문제이다. 

완전탐색처럼 모든 노드를 탐색하되, 출발지 / 경유지 / 도착지 가 겹치지 않게 하여 출발지~도착지의 최소 거리를 2차원 list에 저장했다. 

비용이 음수인 경우가 있어서 result 값을 -Inf 로 초기화 했다. 

DP의 기초 개념?을 알려주고자 나온 문제인 것 같다. 

반응형