백준 13565번 침투 문제이다.
import sys
sys.setrecursionlimit(1000000)
M, N = map(int,sys.stdin.readline().split())
visited = [[0]*(N) for _ in range(M)]
graph = []
for _ in range(M):
a = list(map(int, sys.stdin.readline().rstrip()))
graph.append(a)
def dfs(x,y):
if x <= -1 or x >= M or y <= -1 or y >= N:
return
if graph[x][y] == 0 and visited[x][y] == 0: # graph[x][y]가 갈 수 있는 길이고, 방문 된 적 없으면
visited[x][y] = 1
dfs(x,y-1) # 좌
dfs(x-1,y) # 상
dfs(x,y+1) # 우
dfs(x+1,y) # 하
for i in range(N):
# 첫 째줄(outer line)이 0이고 방문한 적이 없는 좌표에서 dfs 호출
if graph[0][i] == 0 and visited[0][i] == 0:
dfs(0,i)
if 1 in visited[M-1]: # 마지막 행에 1이 하나라도 있으면
print("YES")
else:
print("NO")
11724번 '연결 요소의 개수' 문제와 같이 setrecursionlimit을 10000으로 설정했더니 런타임 에러가 났다.
limit을 무작정 크게 하면 채점 서버가 감당할 수 없어 Segmentation fault가 발생하기 때문에,
1,000,000정도의 크기가 적당하다고 한다.
런타임 에러 (RecursionError) (acmicpc.net)
'알고리즘' 카테고리의 다른 글
[개념] Dijkstra(다익스트라) - python (0) | 2022.03.24 |
---|---|
[BOJ] 11724 연결 요소의 개수 - python (0) | 2022.03.23 |
[개념] BFS(Breadth-First Search) - python (1) | 2022.03.20 |
[개념] 힙 정렬 - python (0) | 2022.03.17 |
[BOJ] 1946 신입 사원 - python (0) | 2022.03.16 |