https://www.acmicpc.net/problem/1012
from collections import deque
t=int(input())
dx=[0, 0, 1, -1]
dy=[1, -1, 0, 0]
def bfs(arr, y, x):
dq=deque()
dq.append((y, x))
while dq:
yy, xx = dq.popleft()
arr[yy][xx]=0
for i in range(4):
nx=xx+dx[i]
ny=yy+dy[i]
if 0<=nx and nx<m and 0<=ny and ny<n:
if arr[ny][nx]==1:
dq.append((ny, nx))
arr[ny][nx]=0
for _ in range(t):
m, n, k = map(int, input().split())
arr=[[0]*m for _ in range(n)]
for i in range(k):
x, y = map(int, input().split())
arr[y][x]=1
cnt=0
for i in range(n):
for j in range(m):
if arr[i][j]==1:
cnt+=1
bfs(arr, i, j)
print(cnt)
처음에는 bfs함수를 정의하지않고 메인함수 안에 while문을 사용하여 풀었다.
함수를 정의해서 푸나 안에서 푸나 똑같다고 생각했지만 메모리 초과로 풀이가 안됐다.
아무리 생각해도 외부에서 선언한 것과 내부에서 푼 것과의 차이를 몰라 질문 게시판에 올렸다.