티스토리 뷰
반응형
문제의 저작권은 SW Expert Academy에 있습니다.
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
|
def dfs(s):
global adj, visited, flag, goal, V # goal:도착노드, V:정점수
if s == goal :
flag = 1
return
visited[s] = 1
for i in range(1, V+1):
if adj[s][i] == 1 and visited[i] == 0:
dfs(i)
T = int(input())
for t in range(1, T+1):
flag = 0
V, E = map(int, input().split()) # 정점, 간선
adj = [[0 for i in range(V+1)] for j in range(V+1)] # 2차원 초기화
visited = [0 for i in range(V+1)] # 방문처리
for i in range(E):
s_node, e_node = map(int, input().split()) #시작노드, 끝노드
adj[s_node][e_node] = 1 #인접행렬
start, goal = map(int, input(). split()) #출발노드, 도착노드
dfs(start)
print("#{} {}".format(t, flag))
|
cs |
알고리즘의 꽃은 재귀다.
그리고 dfs의 원리는 stack이다. (+ bfs는 queue라고들 한다.)
일단 dfs는 visited를 반드시 설정해 주어야 한다.
visited란 방문 한 곳을 체크하는 것을 의미하는데 보통 방문 안한 곳을 0, 방문 한 곳을 1로 체크한다.
visited를 설정해야 방문한곳을 다시 방문하지 않아서 무한루트에 빠지는 것을 막을 수 있다.
자세한것은 알고리즘 개념에서 확인하자.
그리고 node에 방향성이 있냐 없냐에 따라 풀이 방식이 달라진다는 점도 알아두자.
반응형
'알고리즘 > sw' 카테고리의 다른 글
4875. [파이썬 S/W 문제해결 기본] 5일차 - 미로_python (0) | 2020.03.28 |
---|---|
4873. [파이썬 S/W 문제해결 기본] 4일차 - 반복문자 지우기_python (0) | 2020.03.28 |
4866. [파이썬 S/W 문제해결 기본] 4일차 - 괄호검사_python (0) | 2020.03.28 |
4869. [파이썬 S/W 문제해결 기본] 4일차 - 종이붙이기_python (0) | 2020.03.28 |
4865. [파이썬 S/W 문제해결 기본] 3일차 - 글자수_python (0) | 2020.03.28 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- next.config.js
- pandas
- Python
- django
- TensorFlow
- nextjs autoFocus
- useState
- typescript
- login
- Deque
- Vue
- read_csv
- NextJS
- mongoDB
- JavaScript
- 클라우데라
- UserCreationForm
- Queue
- 자연어처리
- DFS
- logout
- Express
- react
- react autoFocus
- BFS
- nodejs
- vuejs
- useHistory 안됨
- error:0308010C:digital envelope routines::unsupported
- 자료구조
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함