[백준] 1743: 음식물 피하기

JIN·2021년 12월 24일
0

DFS유형입니다.

dfs를 돌면서 가장 큰 영역을 찾는 문제입니다.
dfs 돌면서 cnt를 올려야 하는 것이 특징입니다.
몇개 인지 찾을 때는 -> for 문에서
영역을 찾을 때는 -> dfs 문에서

import sys
sys.setrecursionlimit(100000)
n, m, k = map(int, input().split())
graph = [[0 for _ in range(m)]for _ in range(n)]

for i in range(k):
	x, y = map(int, input().split())
	graph[x-1][y-1] = 1


def dfs(x, y):
	global each
	if x < 0 or y < 0 or x >= n or y >= m:
		return False
	if graph[x][y] == 0:
		return False
	if graph[x][y] == 1:
		graph[x][y] = 0
		dfs(x-1, y)
		dfs(x+1, y)
		dfs(x, y-1)
		dfs(x, y+1)
		each += 1
		return True
	return False

answer = []
for i in range(n):
	for j in range(m):
		each = 0
		if dfs(i, j) == True:
			answer.append(each)

print(max(answer))
profile
배우고 적용하고 개선하기

0개의 댓글