[백준] 11404번 플로이드 워셜 알고리즘 설명 - 파이썬 with python

2025. 2. 20. 17:52·코딩테스트 준비/문제풀이

백준 11404번 문제는 제목도 플로이드, 코드도 플로이드 알고리즘을 쓰면 된다.

 

https://www.acmicpc.net/problem/11404

 

문제

 

 

설명

 

플로이드 워셜 알고리즘의 핵심 이론은 출발지점에서 도착지점까지 최단 경로가 있을때,

최단 경로 위에 경유지가 있다면 출발지점~경유지, 경유지~도착지점도 최단 경로가 된다.

그래서 플로이드 워셜 점화식은 D[s][e] = min(D[s][e], D[s][k] + D[k][e]) 가 된다.

 

1. 출발지점과 도착지점이 같으면 0, 다르면 무한대로 초기화한다.

2. 최단거리 이중리스트에 input 값을 넣어준다.

3. 점화식으로 최단거리 리스트를 업데이트 한다.

 

※ 플로이드 워셜 알고리즘 로직은 외우도록 한다.

for 경유지 k (노드갯수):
    for 출발지점 s (노드갯수):
        for 도착지점 e (노드갯수):
            D[s][e] = min(D[s][e], D[s][k] + D[k][e])

 

코드

 

import sys
input = sys.stdin.readline

city, bus = int(input()), int(input())
D = [[float('inf')]*city for _ in range(city)]

# 인접 행렬 생성
for _ in range(bus):
    s, e, cost = map(int, input().split())
    s -= 1
    e -= 1
    if D[s][e] > cost:
        D[s][e] = cost

# 플로이드 워셜
for k in range(city):
    D[k][k] = 0
    for start in range(city):
        for end in range(city):
            if D[start][end] > D[start][k] + D[k][end]:
                D[start][end] = D[start][k] + D[k][end]

for dist in D:
    for idx in dist:
        if idx != float('inf'):
            print(idx, end=' ')
        else:
            print(0, end=' ')
    print()

 

 

최단 거리 알고리즘 다익스트라, 벨만 포드, 플로이드에 대한 차이점과 자세한 설명은 알고리즘 카테고리에 정리해뒀습니다.

 

저작자표시 비영리 변경금지 (새창열림)

'코딩테스트 준비 > 문제풀이' 카테고리의 다른 글

[프로그래머스/파이썬] PCCP 기출문제 2번 퍼즐 게임 챌린지 - 이분탐색  (0) 2025.02.23
[프로그래머스/Python] PCCP 기출문제 1번 동영상 재생기 - 파이썬  (0) 2025.02.22
[백준] 11657번 타임머신 | 벨만 포드 알고리즘 파이썬 Python  (0) 2025.02.20
[백준] 1934번 최소공배수 - 유클리드 호제법 풀이 파이썬 Python  (0) 2025.02.14
[백준] 1850번 최대공약수 파이썬 Python / 유클리드 호제법 풀이  (0) 2025.02.14
'코딩테스트 준비/문제풀이' 카테고리의 다른 글
  • [프로그래머스/파이썬] PCCP 기출문제 2번 퍼즐 게임 챌린지 - 이분탐색
  • [프로그래머스/Python] PCCP 기출문제 1번 동영상 재생기 - 파이썬
  • [백준] 11657번 타임머신 | 벨만 포드 알고리즘 파이썬 Python
  • [백준] 1934번 최소공배수 - 유클리드 호제법 풀이 파이썬 Python
하이야니
하이야니
또 취준..!
  • 하이야니
    하이야니's 스케치
    하이야니
  • 전체
    오늘
    어제
    • 분류 전체보기
      • 코딩테스트 준비
        • 알고리즘 개념
        • 문제풀이
      • 파이썬
      • 자바
      • 리눅스
      • C언어
      • 여행
        • 국내
        • 해외
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    거리두기확인하기파이썬
    백준유클리드호제법
    벨만포드
    벨만포드다익스트라
    프로그래머스파이썬
    프로그래머스거리두기확인하기파이썬
    백준bfs
    프로그래머스코딩테스트
    pccp기출문제
    다익스트라
    프로그래머스pccp기출문제
    프로그래머스거리두기확인하기
    프로그래머스pccp
    벨만포드음수사이클
    유클리드호제법파이썬
    pccp기출문제1번
    거리두기확인하기풀이
    너비우선탐색파이썬
    프로그래머스거리두기
    유클리드호제법최대공약수
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
하이야니
[백준] 11404번 플로이드 워셜 알고리즘 설명 - 파이썬 with python
상단으로

티스토리툴바