본문 바로가기
Beakjoon&프로그래머스/파이썬

[백준/파이썬] 11403번 경로 찾기

by 현장 2022. 1. 26.

-코드

n = int(input())
arr = [list(map(int, input().split())) for _ in range(n)]
for i in range(n):
    for j in range(n):
        for k in range(n):
            if arr[j][i] == 1 and arr[i][k] == 1:
                arr[j][k] = 1
for i in arr:
    print(*i)

처음에 보고 무슨 말인지 몰라 찾아보니 플로이드-와샬 알고리즘이라고 해서 찾아보니 모든 정점에 대한 경로를 탐색하는 알고리즘으로 i에서 j로 가는 것이 가능 경우, j에서 i로 가는 경로도 가능하니 해당 부분이 0이면 1로 바꾸고, 또한 k를 거쳐서 i > k > j로 이동이 가능하면 해당 부분도 1로 바꾸어주는 알고리즘이었습니다. 처음에 작성을 했지만 if문을 잘못 작성하여 식이 꼬여서 바꿔보고 찾아보면서 해결을 하였습니다. 하지만 처음 본 분류의 문제라서 아쉬웠습니다.