백준 13023 파이썬 DFS의 시간 복잡도 O(V+E)
2024. 5. 15. 06:53ㆍ코딩 도구/백준
반응형
백준 13023 - ABCDE
문제
https://www.acmicpc.net/problem/13023
13023번: ABCDE
문제의 조건에 맞는 A, B, C, D, E가 존재하면 1을 없으면 0을 출력한다.
www.acmicpc.net
답안 코드 :
import sys
sys.setrecursionlimit(10000)
input = sys.stdin.readline
N, M = map(int, input().split())
arrive = False
A = [[] for _ in range(N + 1)]
visited = [False] * (N + 1)
def DFS(now, depth):
global arrive
if depth == 5 or arrive == True: # 깊이가 5가 되면 종료
arrive = True
return
visited[now] = True
for i in A[now]:
if not visited[i]:
DFS(i, depth + 1) # 재귀 호출 마다 깊이 증가
visited[now] = False
for _ in range(M):
s, e = map(int, input().split())
A[s].append(e) # 양방향 에지이므로 양쪽에 에지를 더하기
A[e].append(s)
for i in range(N):
DFS(i, 1)
if arrive:
break
if arrive:
print(1)
else:
print(0)
생각 :
# 문제 분석
# N의 최대 범위 2,000이므로 알고리즘의 시간 복잡도 좀 여유롭다.
# 주어진 모든 노드에 DFS를 수행하기
# 깊이가 5 이상이면 1 출력, 아니면 0 출력
# DFS의 시간 복잡도는 O(V+E)이므로 최대 4,000
# 모든 노드를 진행해도 4,000 * 2,000 즉 8,000,000이다
# DFS 사용 가능
# 문제 풀이
# 그래프 데이터를 인접 리스트로 저장
# 모든 노드에서 DFS를 수행
# 수행할 때 재귀 호출 마다 깊이를 더하자
# 깊이가 5되면 1을 출력
# 프로그램 종료
# 모든 노드를 돌아도 1이 출력이 안되면 0 출력
탐색 알고리즘 정리 블로그
탐색 알고리즘 정리
탐색 탐색은 주어진 데이터에서 자신이 원하는 데이터를 찾아내는 알고리즘을 말한다. 주어진 데이터의 성질(정렬 데이터 또는 비정렬 데이터)에 따라 적절한 탐색 알고리즘을 선택하는 것이
mkisos.tistory.com
반응형
'코딩 도구 > 백준' 카테고리의 다른 글
백준 1167 파이썬 가장 긴 경로를 찾는 방법 관련 아이디어 (28) | 2024.05.18 |
---|---|
백준 1260 파이썬 DFS와 BFS를 구현할 수 있는가 (25) | 2024.05.16 |
백준 2023 파이썬 DFS 재귀함수 (2) | 2024.05.14 |
백준 11724 파이썬 sys.setrecursionlimit() (1) | 2024.05.13 |
백준 10989 파이썬 기수정렬 계수정렬 (32) | 2024.02.24 |