Algorithm for Coding Test/Swea

SWEA D4 1251 하나로

달린다 동구리 2021. 11. 1. 19:20
728x90
반응형

이 코드는 Python으로 작성했습니다.

def prim(n):
    MST = [0] * N
    cost = [1000000000000] * N
    cost[n] = 0

    for _ in range(N - 1):
        # 최소 가중치 지점 찾기
        w = 0
        min_value = 10000000000000
        for k in range(N):
            if not MST[k]:
                if cost[k] < min_value:
                    w = k
                    min_value = cost[k]
        MST[w] = 1

        for l in range(N):
            # 노드간 최소 거리로 cost 갱신
            if not MST[l]:
                cost[l] = min(cost[l], dist[w][l])

    return sum(cost)


T = int(input())
for tc in range(1, T + 1):
    N = int(input())
    # 섬의 개수
    X = list(map(int, input().split()))
    # 각 섬들의 정수인 X좌표
    Y = list(map(int, input().split()))
    # 각 섬들의 정수인 Y좌표
    E = float(input())
    # 해저터널 건설의 환경 부담 세율 실수 E

    dist = [[0] * N for _ in range(N)]
    # 각 섬마다 거리를 담은 배열
    for i in range(N):
        for j in range(N):
            dist[i][j] = (X[i] - X[j]) ** 2 + (Y[i] - Y[j]) ** 2
    # print(dist)

    answer = round(E*prim(0))

    print('#{} {}'.format(tc, answer))

 

문제 출처 : SW Expert Academy

728x90
반응형