강의

멘토링

커뮤니티

Cộng đồng Hỏi & Đáp của Inflearn

Hình ảnh hồ sơ của kyg88218613
kyg88218613

câu hỏi đã được viết

[Python] Thuật toán DFS mà ngay cả sinh viên giáo dục khai phóng cũng có thể hiểu được! - Giới thiệu

Số phần tử kết nối (Baekjun 11724)

백준 2606

Đã giải quyết

Viết

·

210

1

안녕하세요 선생님! 복습하다가 의문점이 생겨 질문드립니다.

from collections import defaultdict

N = int(input())
T = int(input())

dic = defaultdict(list)
discovered = []

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


def dfs(node):
    global dic, discovered
    discovered.append(node)

    for n in dic[node]:
        if n not in discovered:
            dfs(n)
    return


dfs(1)
print(len(discovered) - 1)

이 코드에서 dic[b].append(a)를 지워도 문제 해결에는 영향이 없어 보이는데, 백준에 제출하면 틀린 답으로 나옵니다.

즉, 그래프를 양방향이 아닌 단방향으로 설정해도 문제 없지 않나요..?

python코딩-테스트알고리즘dfspython3

Câu trả lời 1

2

gaebaljob님의 프로필 이미지
gaebaljob
Người chia sẻ kiến thức

kyg8821님 안녕하세요 🙂

단방향인지 양방향인지는 문제에서 주어지는 대로 구현해야 되고 임의로 판단할 수는 없습니다!

예를 들어 (1, 2), (3, 2) 라는 간선 정보가 입력됐다면, 양방향인 경우에는 1,2,3 모두 연결되어 있다고 가정하지만, 단방향일 경우 1과 3은 서로 연결되어 있다고 보지 않습니다. 이 외에도 1에서 2는 갈 수 있지만 2에서 1은 갈 수 없기 때문에 양방향과는 완전히 다른 답안이 나옵니다.

그래서 이 부분은 직접 판단할 필요가 없고 문제에서 주어지는 대로 구현하시면 됩니다! 이 문제 같은 경우 양방향을 요구하기 때문에 append를 2줄 수행해야 됐고, 단방향일 때는 말씀하신 대로 한 줄은 생략해야 정답이 됩니다!

혹시 더 궁금하시거나 이해가 안 되는 부분은 댓글 남겨주세요 :)

Hình ảnh hồ sơ của kyg88218613
kyg88218613

câu hỏi đã được viết

Đặt câu hỏi