Haribo ML, AI, MATH, Algorithm

배달


from itertools import product
def solution(N, road, K):
    DP = [[500000] * N for _ in range(N)]
    road.sort(key = lambda x : x[2], reverse = True)
    for v1, v2, cost in road:
        DP[v1 - 1][v2 - 1] = DP[v2 - 1][v1 - 1] = cost
    for t in range(N):
        DP[t][t] = 0
    for via, i, j in product(range(N), repeat=3):
        if DP[i][j] > (l := DP[i][via] + DP[via][j]):
            DP[i][j] = l
    return len([x for x in DP[0] if x <= K])

Floyd-Warshall Algorithm

``알고리즘 문제이다. 합승택시요금문제와 정확히 똑같은 문제이고 코드또한 거의 비슷하다. 다만,

3 - 5 길처럼 2개의 길이 있을 수 있기 때문에, road를 비용기준 내림차순 정렬시킨뒤 Floyd-Warshall Algorithm 알고리즘을 사용하였다.


Similar Posts

이전 포스트 기지국 설치

다음 포스트 길 찾기 게임

Comments