Open robert-min opened 1 month ago
⏰ 소요 시간 : 20분 🗂️ 유형 : 최단거리문제
🖌️ 문제 풀이
def floyd(arr, n):
for k in range(n):
for i in range(n):
for j in range(n):
# i->j 와 i->k->j 가는 지점 중 최소값을 저장
arr[i][j] = min(arr[i][k] + arr[k][j], arr[i][j])
def solution(n, s, a, b, fares):
answer = 0
import sys
s, a, b = s-1, a-1, b-1
# 2차원 그래프 생성
arr = [[sys.maxsize for _ in range(n)] for _ in range(n)]
# 본인 노드에서 본인 노드 가는 거리 0 으로 초기화
for i in range(n):
arr[i][i] = 0
for u, v, f in fares:
arr[u-1][v-1], arr[v-1][u-1] = f, f
floyd(arr, n)
answer = sys.maxsize
# 중간지점 체크
for k in range(n):
answer = min(answer, arr[s][k] + arr[k][a] + arr[k][b])
return answer
문제 추천 이유!!
문제 링크
https://school.programmers.co.kr/learn/courses/30/lessons/72413
*작성가이드 입니다.
아래는 comment 템플릿입니다.(복사해서 사용)