일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
Tags
- 백트랙킹
- dp
- BFS
- 코딩테스트
- 백준 #알고리즘 #파이썬 #코딩테스트
- 다익스트라
- java #자바
- 다이나믹프로그래밍
- 프로그래머스 #파이썬 #알고리즘 #코딩테스트
- 파이썬
- 재귀
- java #자바 #생활코딩
- java #자바 #나동빈
- 파이썬 #백준 #알고리즘 #코딩테스트
- PYTHON
- Dijkstra
- 백준
- css #웹 #생활코딩
- 자바 #java
- css #생활코딩 #웹
- 파이썬 #알고리즘 #코딩테스트 #프로그래머스
- 프로그래머스
- 알고리즘
- DFS
- 투포인터
- react #리액트 #동빈나 #나동빈 #유튜브강의
- react #리액트 #동빈나
- java #자바 #동빈나
- 백준 #파이썬 #알고리즘 #코딩테스트
- 프로그래머스 #파이썬 #코딩테스트 #알고리즘
Archives
- Today
- Total
커리까지
[백준] 11403번 경로찾기 파이썬 본문
728x90
SMALL
문제
가중치 없는 방향 그래프 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
문제풀이
- 입력 받는 형태가 일반적으로 우리가 알던 플로이드 워셜이 형태가 아니라 이미 형태가 갖춰진 행렬형식이다.
- 간선이 연결된 정보는 1로 구분할 수 있으니 똑같이 이중 리스트로 만들어서 진행했다.
n = int(input())
graph = [list(map(int, input().split())) for _ in range(n)]
- 3번의 for loop를 돌면서 간선 정보가
graph[a][k]
와graph[k][b]
가 모두 1이면graph[a][b]
도 간선이 연결되어있다는 뜻이다.
n = int(input())
graph = [list(map(int, input().split())) for _ in range(n)]
for k in range(n):
for a in range(n):
for b in range(n):
if graph[a][k] == 1 and graph[k][b] == 1:
graph[a][b] = 1
제출답안
import sys
input = sys.stdin.readline
def solution():
n = int(input())
graph = [list(map(int, input().split())) for _ in range(n)]
for k in range(n):
for a in range(n):
for b in range(n):
if graph[a][k] == 1 and graph[k][b] == 1:
graph[a][b] = 1
for a in range(n):
print(' '.join(list(map(str, graph[a]))), end='\n')
solution()
728x90
LIST
'알고리즘 > 풀이' 카테고리의 다른 글
[프로그래머스] 2021 카카오 블라인드 메뉴 리뉴얼 파이썬 (0) | 2022.03.22 |
---|---|
[백준] 2468번 안전 영역 파이썬 (0) | 2022.03.21 |
[백준] 1446번 지름길 파이썬 (0) | 2022.03.12 |
[백준] 1991번 트리 순회 파이썬 (0) | 2022.03.11 |
[프로그래머스] 동적계획법 등굣길 파이썬 (0) | 2022.03.10 |
Comments