728x90
https://www.acmicpc.net/problem/13023
13023번: ABCDE
문제의 조건에 맞는 A, B, C, D, E가 존재하면 1을 없으면 0을 출력한다.
www.acmicpc.net
깊이우선탐색(DFS)로 문제를 해결 하였습니다. 친구의 관계가 A->B->C->D->E와 같은 경우가 존재할경우, DFS탐색을 중지합니다.
사이클이 생기지 않도록 탐색한 친구는 또 탐색하지 않습니다.
Set 자료구조를 활용하여 깊이우선 탐색을 한 친구는 Set 자료구조에 추가하여 이미 방문한 친구를 찾을때 O(1) 시간복잡도로 찾을 수 있습니다.
import sys
sys.setrecursionlimit(100000)
N , M = map(int ,input().split())
graph = [[] for _ in range(N)]
for _ in range(M):
a, b = map(int, input().split())
graph[a].append(b)
graph[b].append(a)
def dfs(start):
global isFriend
if len(queue) == 5:
isFriend = True
return
for friend in graph[start]:
if friend not in queue:
queue.add(friend)
dfs(friend)
queue.remove(friend)
queue = set()
isFriend = False
for i in range(N):
queue.add(i)
dfs(i)
queue.remove(i)
if isFriend:
break
if isFriend:
print(1)
else:
print(0)
728x90
'알고리즘 > 백준' 카테고리의 다른 글
[백준] 2146번 : 다리 만들기 (0) | 2023.08.30 |
---|---|
[백준] 2638번 : 치즈 (0) | 2023.08.25 |
[백준] 1937번 : 욕심쟁이 판다 (0) | 2023.08.24 |
[백준] 1967번 : 트리의 지름 (0) | 2023.08.22 |
[백준] 1043번 : 거짓말 (0) | 2023.08.22 |