첫 시도, 잘못된 코드
def find_cabbage_group(row:int, col:int, index:int, cabbage_coordinates:list, visited:list) -> int:
if visited[index]:
return 0
for index, coordinate in enumerate(cabbage_coordinates):
if [row-1, col] == coordinate:
visited[index] = True
find_cabbage_group(row-1, col, index, cabbage_coordinates, visited)
elif [row, col-1] == coordinate:
visited[index] = True
find_cabbage_group(row, col-1, index, cabbage_coordinates, visited)
elif [row, col+1] == coordinate:
visited[index] = True
find_cabbage_group(row, col+1, index, cabbage_coordinates, visited)
elif [row+1, col] == coordinate:
visited[index] = True
find_cabbage_group(row+1, col, index, cabbage_coordinates, visited)
else:
continue
return 1
testcase_num = int(input())
answer_list = []
for _ in range(testcase_num):
colomn_num, row_num, cabbage_num = map(int, input().split())
cabbage_coordinates = []
for _ in range(cabbage_num):
cabbage_coordinates.append(list(map(int, input().split())))
visited = [False for _ in range(cabbage_num)]
cabbage_group_num = 0
for index, coordinate in enumerate(cabbage_coordinates):
cabbage_group_num += find_cabbage_group(coordinate[0], coordinate[1], index, cabbage_coordinates, visited)
answer_list.append(cabbage_group_num)
for answer in answer_list:
print(answer)

수정된 코드
import sys
q_input = sys.stdin.readline
sys.setrecursionlimit(10**6)
def dfs(cabbage_field:list, row:int, col:int) -> None:
cabbage_field[row][col] = 0
if row-1 >= 0 and cabbage_field[row-1][col] == 1:
dfs(cabbage_field, row-1, col)
if col-1 >= 0 and cabbage_field[row][col-1] == 1:
dfs(cabbage_field, row, col-1)
if col+1 <= column_count-1 and cabbage_field[row][col+1] == 1:
dfs(cabbage_field, row, col+1)
if row+1 <= row_count-1 and cabbage_field[row+1][col] == 1:
dfs(cabbage_field, row+1, col)
testcases_num = int(q_input())
answer_list = []
for _ in range(testcases_num):
column_count, row_count, cabbage_count = map(int, q_input().split())
cabbage_field = [[0 for _ in range(column_count)] for _ in range(row_count)]
for _ in range(cabbage_count):
j, i = map(int, q_input().split())
cabbage_field[i][j] = 1
cabbage_group_num = 0
for i in range(row_count):
for j in range(column_count):
if cabbage_field[i][j] == 1:
dfs(cabbage_field, i, j)
cabbage_group_num += 1
answer_list.append(cabbage_group_num)
for answer in answer_list:
print(answer)
