Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
Tags
- 자바
- Android
- softeer
- DART
- 파이썬
- Flutter
- 코테
- 백준
- java
- 스위프트
- 현대sw
- VSCode
- 개발
- 알고리즘
- GDSC
- 머신러닝
- 코틀린
- MVVM
- aws
- 소프티어
- programers
- baekjoon
- 플러터
- kotlin
- 다트
- 프로그래머스
- SWIFT
- 안드로이드
- 아마존 웹 서비스
- Python
Archives
- Today
- Total
조준장 개발자 생존기
[baekjoon] 백준 11403번(파이썬): 경로 찾기 본문
문제
11403번: 경로 찾기
가중치 없는 방향 그래프 G가 주어졌을 때, 모든 정점 (i, j)에 대해서, i에서 j로 가는 경로가 있는지 없는지 구하는 프로그램을 작성하시오.
www.acmicpc.net
- 가중치 없는 방향 그래프 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으로 출력해야 한다.
알고리즘
- dfs 탐색을 통해 문제를 수행한다.
- n번을 반복하는 동안 체크 리스트를 계속해서 초기화하여 dfs 탐색을 한다.
- dfs는 한줄씩 비교하여 재귀적으로 탐색한다.
코드
import sys
# dfs 탐색
def dfs(v):
# 한줄씩 비교
for i in range(n):
if check[i] == 0 and graph[v][i] == 1:
check[i] = 1
dfs(i)
n = int(sys.stdin.readline())
graph = [list(map(int, sys.stdin.readline().split())) for _ in range(n)]
for x in range(n):
# 체크 리스트를 초기화하여 수행
check = [0 for _ in range(n)]
dfs(x)
print(*check) # 리스트의 경우에는 *기호를 넣어서 각각의 값을 출력할 수 있다.
github
GitHub - junjange/CodingTest: 내가 푼 코딩 테스트 문제와 해결법
내가 푼 코딩 테스트 문제와 해결법. Contribute to junjange/CodingTest development by creating an account on GitHub.
github.com
'CodingTest > Baekjoon' 카테고리의 다른 글
[baekjoon] 백준 16173번(파이썬): 쩰리 (Small) (2) | 2021.07.24 |
---|---|
[baekjoon] 백준 1388번(파이썬): 바닥 장식 (0) | 2021.07.23 |
[baekjoon] 백준 4963번(파이썬): 섬의 개수 (0) | 2021.07.21 |
[baekjoon] 백준 11724번(파이썬): 연결 요소의 개수 (0) | 2021.07.20 |
[baekjoon] 백준 1697번(파이썬): 숨바꼭질 (0) | 2021.07.19 |