본문 바로가기

알고리즘/백준

[백준] 13023번 : ABCDE

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