[백준] 11403번 경로 찾기 해설 및 풀이 (Python)

2025. 5. 3. 22:55·Study/코딩 테스트
반응형

백준 11403번 경로 찾기

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


문제 유형

그래프 이론 그래프 탐색 최단 경로 플로이드–워셜

 

풀이 방법 도출

  1. 정점 수 N과 N x N 인접 행렬이 주어진다.
  2. i에서 j로 길이가 양수인 경로가 존재하는지 구합니다.
  3. 플로이드-워셜 알고리즘을 사용하여 모든 정점 쌍 (i, j)에 대해 도달 가능한지 판단합니다.
  4. 만약 i → k 그리고 k → j가 가능하면 i → j도 가능하므로, graph[i][j] = 1로 갱신합니다.
  5. 모든 노드 쌍에 대해 반복합니다.
  6. 도달 가능한 경우 1, 불가능한 경우 0을 출력합니다.

 

 

시간 복잡도

  • 3중 for문 : O(N³)

핵심 코드 삽입 및 설명
import sys
from typing import List

def floyd_warshall(graph: List[List[int]]) -> List[List[int]]:
    n = len(graph)
    # 모든 정점 쌍에 대해 중간 정점 k를 거쳐가는 경로 확인
    for k in range(n):
        for i in range(n):
            for j in range(n):
                # i -> k 경로와 k -> j 경로가 모두 존재하면 i -> j 경로도 존재함
                if graph[i][k] and graph[k][j]:
                    graph[i][j] = 1
    return graph

def main():
    input = sys.stdin.readline
    n = int(input().strip())
    
    # 인접 행렬 입력 받기
    graph = [list(map(int, input().split())) for _ in range(n)]

    # 경로 존재 여부를 플로이드-워셜로 계산
    result = floyd_warshall(graph)

    # 결과 출력
    for row in result:
        print(' '.join(map(str, row)))

if __name__ == "__main__":
    main()
반응형
저작자표시 비영리 변경금지

'Study > 코딩 테스트' 카테고리의 다른 글

[프로그래머스] Lv.1 이웃한 칸 해설 및 풀이 (Python)  (0) 2025.05.03
[백준] 1620번 나는야 포켓몬 마스터 이다솜 해설 및 풀이 (Python)  (0) 2025.05.01
[백준] 5639번 이진 검색 트리 해설 및 풀이 (Python)  (0) 2025.05.01
[프로그래머스] Lv.1 유연근무제 해설 및 풀이 (Python)  (0) 2025.04.30
[백준] 30804번 과일 탕후루 해설 및 풀이 (Python)  (0) 2025.04.30
'Study/코딩 테스트' 카테고리의 다른 글
  • [프로그래머스] Lv.1 이웃한 칸 해설 및 풀이 (Python)
  • [백준] 1620번 나는야 포켓몬 마스터 이다솜 해설 및 풀이 (Python)
  • [백준] 5639번 이진 검색 트리 해설 및 풀이 (Python)
  • [프로그래머스] Lv.1 유연근무제 해설 및 풀이 (Python)
Dev Chu
Dev Chu
  • Dev Chu
    Log_Double 7
    Dev Chu
  • 전체
    오늘
    어제
    • LOG LIST (199)
      • log Double 7 (2)
        • notice (1)
        • 회고록 (1)
      • Study (111)
        • 과제 (2)
        • 코딩 테스트 (105)
        • 대규모 시스템 설계 기초 (4)
      • CS (10)
        • 자료구조 & 알고리즘 (4)
        • Design Pattern (2)
        • TIL (4)
      • FrontEnd (26)
        • HTML & CSS (16)
        • JavaScript & jQuery (9)
        • React (1)
      • BackEnd (24)
        • Java (4)
        • Python (6)
        • Database (0)
        • Spring (6)
      • Infra & DevOps (3)
        • AWS (3)
        • Git (8)
      • Project (3)
        • repo_bis (2)
        • WhiteMonday (1)
      • ETC (20)
        • TIP (13)
        • Error (5)
        • SQLD (2)
  • 블로그 메뉴

    • 코딩 테스트
  • 링크

    • GitHub
  • 공지사항

    • Log Double 7
  • 인기 글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
Dev Chu
[백준] 11403번 경로 찾기 해설 및 풀이 (Python)
상단으로

티스토리툴바