Po_tta_tt0
콩심콩 팥심팥 🌱
Po_tta_tt0
전체 방문자
오늘
어제
  • 분류 전체보기 (266)
    • 🐛 회고 (14)
    • 💭 생각 (2)
    • 🤸‍♀️ 내 프로젝트 (16)
      • FISH-NEWS (8)
      • MBTI 과몰입 테스트 (2)
      • twitter clonecoding with TS (4)
      • pilzagenda (2)
    • 👨‍👩‍👧‍👦 팀 프로젝트 (2)
      • 피우다 프로젝트 (0)
      • SEMO(세상의 모든 모임) (1)
      • 마음을 전하는 텃밭 (1)
      • Stackticon (0)
    • 👨‍💻 CS지식 (11)
    • ✍ 공부 (94)
      • JavaScript (21)
      • TypeScript (39)
      • Html (0)
      • CSS (2)
      • React (18)
      • NextJS (7)
      • Vue (1)
      • Python (1)
      • Django (0)
      • 개발환경 & 그 외 (2)
    • 🏄‍♀️ 코딩테스트 (99)
      • 🐍 Python (99)
    • 🐙 Git & GitHub (3)
    • 📑 오류기록 (8)
    • 📚 우리를 위한 기록 (9)
    • 수업 (3)
    • 강의 등 (2)
    • 👩‍🎓 SSAFY (0)
    • 👋 우테코 (0)

블로그 메뉴

  • 홈
  • 태그

공지사항

인기 글

태그

  • 시뮬레이션
  • 문자열
  • 백준 파이썬
  • bfs
  • Next.js
  • js
  • React
  • 백준
  • DP
  • 파이썬
  • BFS + DP
  • 파이썬 감시 피하기
  • react-router-dom
  • 구현
  • 이분탐색
  • 백준 숨바꼭질
  • 자바스크립트
  • 플로이드 워셜
  • 파이썬 다익스트라
  • dfs

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
Po_tta_tt0

콩심콩 팥심팥 🌱

🏄‍♀️ 코딩테스트/🐍 Python

[ 백준 11403 해설 ] ( python ) 경로 찾기

2022. 6. 29. 17:46
반응형

 

📚 경로 찾기

 

문제

가중치 없는 방향 그래프 G가 주어졌을 때, 모든 정점 (i, j)에 대해서, i에서 j로 가는 경로가 있는지 없는지 구하는 프로그램을 작성하시오.

 

입력

첫째 줄에 정점의 개수 N (1 ≤ N ≤ 100)이 주어진다. 둘째 줄부터 N개 줄에는 그래프의 인접 행렬이 주어진다. i번째 줄의 j번째 숫자가 1인 경우에는 i에서 j로 가는 간선이 존재한다는 뜻이고, 0인 경우는 없다는 뜻이다. i번째 줄의 i번째 숫자는 항상 0이다.

 

출력

총 N개의 줄에 걸쳐서 문제의 정답을 인접행렬 형식으로 출력한다. 정점 i에서 j로 가는 경로가 있으면 i번째 줄의 j번째 숫자를 1로, 없으면 0으로 출력해야 한다.

 

예제 입력 1 복사

3
0 1 0
0 0 1
1 0 0

예제 출력 1 복사

1 1 1
1 1 1
1 1 1

예제 입력 2 복사

7
0 0 0 1 0 0 0
0 0 0 0 0 0 1
0 0 0 0 0 0 0
0 0 0 0 1 1 0
1 0 0 0 0 0 0
0 0 0 0 0 0 1
0 0 1 0 0 0 0

예제 출력 2 복사

1 0 1 1 1 1 1
0 0 1 0 0 0 1
0 0 0 0 0 0 0
1 0 1 1 1 1 1
1 0 1 1 1 1 1
0 0 1 0 0 0 1
0 0 1 0 0 0 0

 

 

 

 

 

✍ 접근

  • DP
  • 플로이드 워셜

 

 

 

 

정답코드

# ✨ 입력
import sys
input = sys.stdin.readline
N = int(input())
graph = [list(map(int,input().split())) for _ in range(N)]

# ✨ 플로이드 워셜
for k in range(N):
    for i in range(N):
        for j in range(N):
            if graph[i][j] == 1 or (graph[i][k]==1 and graph[k][j]==1):
                graph[i][j] = 1
for x in graph:
    print(*x)

 

해설

입력

  • 문제에서 나온 값을 입력받는다

플로이드 워셜

  • 플로이드 워셜 알고리즘을 이용해 graph를 갱신해준다

 

 

 

 

⭐ 배움

  • 플로이드 워셜 알고리즘

 

반응형
저작자표시 (새창열림)

'🏄‍♀️ 코딩테스트 > 🐍 Python' 카테고리의 다른 글

[ 백준 14500 해설 ] ( python ) 테트로미노  (0) 2022.06.30
[ 백준 3190 해설 ] ( python ) 뱀  (0) 2022.06.30
[ 백준 16236 해설 ] ( python ) 아기 상어  (0) 2022.06.28
[ 백준 1520 해설 ] ( python ) 내리막 길  (0) 2022.06.28
[ 백준 1987 해설 ] ( python ) 알파벳  (0) 2022.06.27
    '🏄‍♀️ 코딩테스트/🐍 Python' 카테고리의 다른 글
    • [ 백준 14500 해설 ] ( python ) 테트로미노
    • [ 백준 3190 해설 ] ( python ) 뱀
    • [ 백준 16236 해설 ] ( python ) 아기 상어
    • [ 백준 1520 해설 ] ( python ) 내리막 길
    Po_tta_tt0
    Po_tta_tt0
    감자의 코딩하는 블로그 콩심은데 콩나고 팥심은데 팥난다

    티스토리툴바