ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 13023. [Python]ABCDE
    Python_알고리즘/Gold V 2025. 4. 9. 03:41

    1. 문제

     

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

     

    2. 접근 방법

     

    • 시간 제한: 2초
    • 메모리 제한: 512MB
    • 백트래킹

     

    3. 파이썬 코드

     

    import sys
    # 백트래킹
    def DFS(s,depth):
        # 최대 연결된 인원이 5명인 경우 1을 출력 후 탈출
        if depth == 5:
            print(1)
            exit()
        # 연결된 인원들 탐색하며 백트래킹
        for j in matrix[s]:
            if visited[j] == False:
                visited[j] = True
                DFS(j,depth+1)
                visited[j] = False
    
    input = sys.stdin.readline
    
    N, M = map(int,input().split())
    
    matrix = [[] for _ in range(N)]
    # 양방향 그래프 구성
    for _ in range(M):
        start, end = map(int,input().split())
        matrix[start].append(end)
        matrix[end].append(start)
    # 0번 사람부터 N-1 번 사람까지 탐색해가며 연결 깊이 체크
    for i in range(N):
        visited = [False] * N
        visited[i] = True
        DFS(i,1)
    else:
        print(0)

     

    4. 문제를 풀고난 후 생각

     

    • 문제를 읽어본 후 요구하는 조건을 해석하는 부분이 조금 오래 걸렸던 문제였다.
    • 결국 문제에서 요구하는 것은 깊이가 5 이상이 존재하는지 여부를 묻는 문제였고, 단순히 DFS로 구현을 진행했는데 틀렸다.
    • 그 이유는 노드를 방문하는 순서에 따라서 깊이가 5가 될 수 있고 안되고 차이가 존재했기 때문이였고, 이를 바탕으로 백트래킹으로 코드를 다시 구현하여 문제를 해결하였다.

     

    5. 문제를 푸는데 도움이 되는 지식

     

    • 백트래킹

    'Python_알고리즘 > Gold V' 카테고리의 다른 글

    13398. [Python]연속합 2  (0) 2025.03.16
    3980. [Python]선발 명단  (1) 2024.10.21
    1469. [Python]숌 사이 수열  (0) 2024.10.08
    14719. [Python]빗물  (0) 2024.09.30
    2294. [Python]동전 2  (1) 2024.09.05

    댓글

Designed by Tistory.