inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

[자바/Java] 문과생도 이해하는 DFS 알고리즘! - 입문편

연결 요소의 개수 (백준 11724)

연결요소개수 - 파이썬 풀이 공유

해결된 질문

327

8055kjh

작성한 질문수 2

1

안녕하세요 저는 강사님 강의로 공부하고 파이썬으로 코테를 준비하고 있습니다. 저와 같은 상황에 계신분들과 공유하고 싶어 글을 올립니다. 파이썬 풀이에서 부족한 부분 알려주시면 수정하겠습니다.~

import sys
sys.setrecursionlimit(10 ** 6)

N, M = map(int, sys.stdin.readline().split())
MAX = 1000 + 10
graph = [[False for in range(MAX)] for in range(MAX)]
visited = [False for in range(MAX)]

for in range(M):
x, y = map(int, sys.stdin.readline().split())
graph[x][y] = True
graph[y][x] = True


def dfs(idx):
visited[idx] = True
for j in range(1, N + 1):
if not visited[j] and graph[idx][j]:
dfs(j)


cnt = 0
for i in range(1, N + 1):
if not visited[i]:
dfs(i)
cnt += 1

print(cnt)

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

답변 1

1

개발자로 취직하기

이렇게 파이썬 코드 공유해주셔서 정말 감사합니다!! ㅎㅎ
주말에도 이렇게 공부하시니 꼭 좋은 결과 있을 겁니다!!

참고로 제 코드도 공유 드릴게요 ㅎㅎ 작성하신 방식과 거의 동일한 것 같아요

 

import sys
sys.setrecursionlimit(10**6)
input = sys.stdin.readline

# 재귀함수 (DFS)
def dfs(idx):
    global visited, graph
    visited[idx] = True
    for i in range(1, N+1):
        if not visited[i] and graph[idx][i]:
            dfs(i)

# 0. 입력 및 초기화
MAX = 1000 + 10
N, M = map(int, input().split())
graph = [[False] * MAX for _ in range(MAX)]
visited = [False] * MAX
answer = 0

# 1. graph에 연결 정보 채우기
for _ in range(M):
    u, v = map(int, input().split())
    graph[u][v] = True
    graph[v][u] = True

# 2. DFS 호출
for i in range(1, N+1):
    if not visited[i]:
        answer += 1
        dfs(i)

# 3. 출력
print(answer)

1

8055kjh

감사합니다!

dfs 부문을 이렇게 작성해도 되나요?

1

74

1

x랑 y를 거꾸로 쓰는 개념이 너무 헷갈립니다...

1

97

2

dfs 파라미터에 count를 넣는이유

1

65

2

graph 채울때 for문 설계 질문

1

73

2

질문있습니다.

1

75

1

다른 강의 언제나오나용?

1

94

2

노드간 거리 계산

1

146

1

안녕하세요, 혹시 다른문제도 여쭤볼 수 있을까요?

1

131

1

최근에 올린 질문, 코드블럭으로 공유드립니다!

1

143

1

질문이 있습니다. dfs 메서드에 order를 이렇게 구현하면 안되는 이유가 무엇인가요?

0

135

2

깊이우선탐색2 백준 24480 수업노트에...

1

120

1

백준 24479 문제 제출 결과 "틀렸습니다" 라고만 나와서 어떤 부분이 틀렸는지 잘 모르겠어요 피드백 부탁드립니다

1

251

3

graph 만들때 boolean[][] 으로 만드는 경우랑 int[][] 나 ArrayList<Integer>[] 로 만드는 기준이 어떻게 되나요?

1

202

2

graph를 2차원 배열 또는 List로 하는 기준을 어떤식으로 잡으면 좋을까요...?

1

224

1

강사님 안녕하세요! 깊이 우선 탐색 2 (백준 24480)에서 제공하는 풀이 코드에서 궁금한 점이 있어서 질문 드립니다!

1

328

3

촌수 계산

1

355

3

연결 요소의 개수 (백준 11724)

1

268

1

백준 24479 문제 시간 초과 질문 드려요

1

384

1

백준 실행시 틀립니다.

1

373

1

재귀대신 스택으로 구현하면 안될까요?

1

410

1

dfs 매개변수에서 y,x 를 왜 순서를 반대로 쓰셨는지 궁금합니다.

1

373

1

안녕하세요 11724번 질문드려요!

2

316

1

출력할 때 BufferedWriter? StringBuilder?

1

513

1

answer++ 위치 질문

1

257

1