boj1202 유기농배추
문제 : 유기농배추
맞은 코드
import sys
from collections import deque
def bfs(graph, x,y, row, col):
q = deque()
q.append([x, y])
graph[x][y] = 0
while q:
x, y = q.popleft()
for i in range(4):
tx = x + dx[i]
ty = y + dy[i]
if tx < 0 or tx > row-1 or ty < 0 or ty > col-1 or graph[tx][ty] == 0:
continue
else:
q.append([tx ,ty])
graph[tx][ty] = 0 # visit
if __name__ == "__main__":
input = sys.stdin.readline
dx = [0, 0, 1, -1]
dy = [1, -1, 0, 0 ]
tc = int(input())
for _ in range(tc):
answer = 0
col, row, n = map(int, input().split()) # 가로길이, 세로길이, 지렁이 갯수
# print(col, row, n)
graph = [[0 for _ in range(col)] for _ in range(row)]
for _ in range(n):
i, j = map(int, input().split())
graph[j][i] = 1
# print(graph)
for i in range(row):
for j in range(col):
if graph[i][j] == 1:
bfs(graph, i, j, row, col)
answer += 1
print(answer)
del graph
런타임에러 코드
import sys
def bfs(graph, x,y, row, col):
if x < 0 or x > row-1 or y < 0 or y > col-1:
return False
if graph[x][y] == 1:
graph[x][y] = 0 # visit
bfs(graph, x-1, y,row, col)
bfs(graph, x+1, y,row, col)
bfs(graph, x, y-1,row, col)
bfs(graph, x, y+1,row, col)
return True
return False
if __name__ == "__main__":
input = sys.stdin.readline
tc = int(input())
for _ in range(tc):
answer = 0
col, row, n = map(int, input().split()) # 가로길이, 세로길이, 지렁이 갯수
# print(col, row, n)
graph = [[0 for _ in range(col)] for _ in range(row)]
for _ in range(n):
i, j = map(int, input().split())
graph[j][i] = 1
# print(graph)
for i in range(row):
for j in range(col):
if bfs(graph, i, j, row, col) == True:
answer += 1
print(answer)
del graph
런타임 원인 : boj의 최대 재귀 허용 크기인 1000보다 많이 재귀를 돔
두번째 줄에 sys.setrecursionlimit(10**6) 추가하믄 맞았습니다.
Author And Source
이 문제에 관하여(boj1202 유기농배추), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@dust_potato/boj1202-유기농배추저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)