문제출처: https://www.acmicpc.net/problem/14716
1. 문제 접근 방식
여느 dfs 문제처럼 풀되 대각선도 가능함으로 dx와 dy를 8개씩 적어준다.
2. 내가 푼 코드
import sys
sys.setrecursionlimit(100000)
dx = [-1, -1, -1, 0, 0, 1, 1, 1]
dy = [0, -1, 1, -1, 1, -1, 0, 1]
def dfs(x,y):
if x<0 or x>=n or y<0 or y>=m:
return False
if graph[x][y] == 1:
graph[x][y] = 0
for i in range(8):
dfs(x+dx[i],y+dy[i])
return True
n, m = map(int,sys.stdin.readline().split())
graph = []
total = 0
for i in range(n):
graph.append(list(map(int,sys.stdin.readline().split())))
for i in range(n):
for j in range(m):
if dfs(i,j)==True:
total+=1
print(total)
3. 결과 및 느낀점
recursionlimit을 항상 적어주자. 런타임 에러가 나기 쉽다.
'[Boj문제풀이]' 카테고리의 다른 글
[Boj/백준] 10026 Python (0) | 2021.09.23 |
---|---|
[Boj/백준] 2583 Python (0) | 2021.09.22 |
[Boj/백준] 2667 Python (0) | 2021.09.21 |
[Boj/백준] 2644 Python (0) | 2021.09.20 |
[Boj/백준] 21773 Python (0) | 2021.09.18 |