눈송이의 개발생활

[BOJ]13023 - ABCDE (Python) 본문

Algorithm/BOJ

[BOJ]13023 - ABCDE (Python)

꾸지새미언니

문제 

https://www.acmicpc.net/problem/13023

코드 

import sys
input = lambda: sys.stdin.readline().strip()


def dfs(v, depth):
    global ans
    visited[v] = 1
    if depth == 4:
        ans = True
        return
    for i in graph[v]:
        if visited[i] == 0:
            dfs(i, depth + 1)
            visited[i] = 0


N, M = map(int, input().split())
graph = [[] for _ in range(N)]
visited = [0 for _ in range(N)]
ans = False

for _ in range(M):
    a, b = map(int, input().split())
    graph[a].append(b)
    graph[b].append(a)

for i in range(N):
    dfs(i, 0)
    visited[i] = 0
    if ans:
        break

print(1 if ans else 0)

 

풀이

문제 이해를 잘못해서 초반에 접근이 어려웠다

질문글에서 `depth` 힌트를 보게 되었고 그래프의 깊이를 사용해서 문제를 풀 수 있었다 

기존에는 graph 이중 리스트에 노드들이 연결 되어있는지(1) 아닌지(0) 저장했었는데 이 문제에서는 시간 초과가 계속 났었다 

그래서 그냥 입력받은 노드들을 인덱스로 해서 연결되어 있는 노드를 해당 자리에 넣었다 

이 문제를 통해서 배운 점... 

 

  • 그래프 문제들은 깊이를 생각해야 되는 문제가 나올 수 있으니 항상 염두해두기 
  • 그래프(리스트) 자체에 값을 넣어보기 
  • dfs 함수 한 번 돌때마다 깊이 증가시켜주기 

'Algorithm > BOJ' 카테고리의 다른 글

[BOJ]7576 - 토마토 (Python)  (0) 2022.02.21
[BOJ]14226 - 이모티콘 (Python)  (0) 2022.02.18
[BOJ]13549 - 숨바꼭질 3 (Python)  (0) 2022.02.15
[BOJ]1697 - 숨바꼭질 (Python)  (0) 2022.02.15
[BOJ]2178 - 미로 탐색 (Python)  (0) 2022.02.11
Comments