새로운 블로그로 이전 작업을 진행하고 있어 포스트가 새로 작성되고 있지 않습니다.

빠른 시일 내에 새로운 블로그로 인사드리겠습니다.

새로운 블로그 : https://unho.vercel.app/

본문 바로가기
알고리즘 문제풀이/Python

[백준] 13023 ABCDE

by 언호 2022. 6. 14.

📖 문제


🧑🏻‍💻 풀이 과정

1) 문제 접근 및 이해

그래프에서 계속해서 다음 깊이를 탐색하는 것으로 깊이가 5가 되는 관계가 있는지 탐색이 필요했습니다.

DFS를 재귀로 구현하여 ABCDE 관계가 있는지 여부를 탐색하였습니다.

2) 알고리즘

  • DFS
  • 재귀

3) 풀이 코드

사용 언어 - Python

import sys
sys.stdin = open('input.txt')

def solution(node, ans):            # 현재 사람 번호, 탐색 깊이
    global answer

    if ans >= 5:                    # ABCDE 관계가 된다면
        answer = True               # 정답 변경
        return

    visited[node] = 1               # 현재 사람 탐색 체크

    for next in linked[node]:       # 현재 사람과 친구인 사람들 탐색
        if not visited[next]:       
            solution(next, ans+1)   # 아직 탐색하지 않은 사람이면, 다음 단계 탐색
    
    visited[node] = 0               # 현재 사람 탐색 해제

N, M = map(int, sys.stdin.readline().split())       # 사람, 친구 관계 수
linked = [[] for _ in range(N)]                     # 사람간 친구 관계
visited = [0] * N                                   # 탐색 여부
answer = False                                      # ABCDE 존재 여부

for _ in range(M):
    a, b = map(int, sys.stdin.readline().split())
    linked[a].append(b)                             # 친구 관계 연결
    linked[b].append(a)

for k in range(N):              # 0번부터 탐색
    solution(k, 1)

    if answer:                  # ABCDE 관계가 있다면
        print(1)                # 1 출력
        break
else:                           # 관계가 없다면, 0 출력
    print(0)

🔗 문제 링크

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

 

13023번: ABCDE

문제의 조건에 맞는 A, B, C, D, E가 존재하면 1을 없으면 0을 출력한다.

www.acmicpc.net

 

 

※ 오류 및 오타, 다른 의견이 있는 경우 댓글을 남겨주시면 감사하겠습니다

'알고리즘 문제풀이 > Python' 카테고리의 다른 글

[백준] 2668 숫자고르기  (0) 2022.06.16
[백준] 2251 물통  (0) 2022.06.15
[백준] 10282 해킹  (0) 2022.06.12
[백준] 1507 궁금한 민호  (0) 2022.06.11
[백준] 1613 역사  (0) 2022.06.10

댓글