< 문제 >
< 입출력 >
< 풀이 >
이 문제는 X, Y 가 바뀌어 있어 헷갈렸으나, DFS 문제인것을 파악하는 것은 쉬웠다.
문제를 풀때 입출력은 동일했으나, 계속 런타임 에러가 떴는데 sys.setrecursionlimit(10**6) 를 붙여 해결했다.
sys.setrecursionlimit(10**6) 은 파이썬의 기본 재귀 깊이 함수가 1000으로 얕아 런타임 에러가 뜰 때, 재귀 깊이를 늘려주기 위한 방법이다.
< 코드 >
import sys
sys.setrecursionlimit(10000)
readline = sys.stdin.readline
n = int(readline())
def dfs(x,y):
if x<= -1 or x>=N or y<=-1 or y>=M:
return False
if arr[x][y] == 1:
arr[x][y] = 0
dfs(x - 1, y)
dfs(x + 1, y)
dfs(x, y - 1)
dfs(x, y + 1)
return True
return False
for _ in range(n):
M, N, K = map(int, readline().split())
arr = [[0] * M for _ in range(N)]
for _ in range(K):
x, y =map(int, readline().split())
arr[y][x] = 1
result = 0
for i in range(N):
for j in range(M):
if dfs(i, j):
result +=1
print(result)
'코딩 테스트 > DFS + BFS' 카테고리의 다른 글
[백준 2457번] 공주님의 정원 문제 풀이 (with Python) (0) | 2023.11.27 |
---|---|
[백준 1987번] 알파벳 문제 풀이 (with Python) (1) | 2023.11.08 |
[백준 2668번] 숫자 고르기 문제 풀이 (with Python) (0) | 2023.11.07 |
[백준 10026번] 적록색약 문제 풀이 (with Python) (0) | 2023.11.06 |
[백준 21609번] 상어 중학교 문제 풀이 (0) | 2023.10.29 |
댓글