inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)

12. 단지 번호 붙이기(DFS)

section 7 단지번호 붙이기

244

승환 김

작성한 질문수 5

0

안녕하세요 강사님.

질문이 있어 글 남깁니다.

DFS로 문제를 풀이하는 과정에서 DFS의 종료 조건이 없어 단지 하나를 다 탐색하고 DFS내의 For 문이 한 번 더 그냥 도는 거로 보이는데 이렇게 For Loop가 한 번 더 의미 없이 안돌게 하려면 어떻게 해야 할까요??

python 코딩-테스트

답변 2

1

김태원

안녕하세요^^

단지번호붙이기처럼 블러드필 문제는 보통 DFS에 종료조건을 두지 않고 영상처럼 하는게 일반화되어 코딩테스트에서는 큰 문제가 되지 않을 겁니다. 단지 하나가 다 확인되었다는 것을 알아야 하는데 그게 쉽지 않을 것 같습니다.

0

인프런 AI 인턴

안녕하세요, 인프런 AI 인턴이에요. DFS 문제에 대해서 질문하셨군요.
DFS는 깊이 우선 탐색으로, 스택이나 재귀 함수를 사용하여 그래프를 탐색하는 알고리즘입니다. DFS에서 종료 조건을 설정하지 않으면, 탐색을 끝내기 위한 조건 없이 계속해서 그래프를 탐색하게 됩니다.

만약 단지 하나를 다 탐색하고 해당 DFS의 종료 조건으로 설정하고자 한다면, 예를 들어 그래프의 모든 정점을 방문하면 종료하고 싶다면, DFS 호출 전에 방문한 정점을 체크하고 해당 정점이 이미 방문한 정점이라면 종료하는 조건을 추가하면 되겠습니다.

예를 들어, 방문한 정점을 체크하는 visited 배열이 있다고 가정하고 코드를 작성해보면 다음과 같습니다.

def dfs(graph, v, visited):
    visited[v] = True  # 정점 v를 방문했다고 표시
    
    # DFS 탐색 과정
    
    for i in graph[v]:  # 정점 v와 연결된 정점들에 대해서
        if not visited[i]:  # 만약 i번째 정점을 방문하지 않았다면
            dfs(graph, i, visited)  # 해당 정점을 방문하기 위해 재귀 호출

# 실행 코드
n = 10  # 정점의 개수
graph = [[] for _ in range(n)]  # 그래프 초기화
visited = [False] * n  # 방문 여부 체크 배열

# 그래프 정보 초기화
# ...

# DFS 호출
for i in range(n):
    if not visited[i]:
        dfs(graph, i, visited)

위 코드에서는 visited 배열을 사용하여 각 정점에 대한 방문 여부를 체크합니다. 방문한 정점을 체크하고 있다면 해당 정점에 대해서 추가적인 탐색을 진행하지 않고 종료하게 됩니다.

이렇게 하면 DFS의 종료 조건을 설정하고, For 루프가 한 번 더 돌지 않도록 할 수 있습니다. 제가 설명한 내용이 도움이 되셨기를 바랍니다. 추가적인 질문이 있으시면 언제든지 물어보세요!

기존에 윈도우 10으로 잘 써왔는데 윈도우 11로 바꾸고 나서 채점이 안됩니다.

1

78

2

스택에서 ')'을 만나는 경우

0

80

3

문제가 어디있나요?

0

67

2

변수 or 함수명

0

61

1

침몰하는 타이타닉 문제 질문입니다

0

58

1

AA.py 책점 에러

0

60

1

오늘 구매했는데 파이썬 자료구조 궁금한거 있으면 답변이 잘 될까요.

0

111

2

5.동전분배하기 문제 밑에코드도 정답이될까요?

0

110

1

아나그램 비교 코드

0

116

2

AA.PY파일 복사 후 채점 진행할때 오류 발생합니다.

0

161

2

문제 링크가있나여?

0

147

2

채점기 Time Limit Exceeded 오류 문의

1

165

2

동적계획법은 사용하는 문제

0

126

2

제 코드 좀 봐주세요

0

148

1

예외가 존재할 가능성?

0

97

1

3번이 안풀립니다

0

93

0

5번 틀림

0

115

0

오류원인?

0

98

0

리스트 선언

0

107

1

침몰하는 타이타닉(그리디) 문제 질문

0

110

1

알고리즘

0

69

1

코딩테스트

0

92

1

DFS 순서 질문드립니다.

0

129

2

left, right를 사용한 풀이법에 대한 질문입니다

0

91

1