[백준 2468번] 안전 영역

박형진·2023년 1월 31일
0

https://www.acmicpc.net/problem/2468


1. 코드

import copy
import sys
def dfs(x, y):
   if not (0 <= x < n and 0 <= y < n):
       return

   if visited[x][y]:
       visited[x][y] = False
       dfs(x-1, y)
       dfs(x+1, y)
       dfs(x, y-1)
       dfs(x, y+1)

sys.setrecursionlimit(10000)
answer = 1
n = int(input())
og_graph = [list(map(int, sys.stdin.readline().rstrip().split())) for _ in range(n)]
max_rain = 1
for i in range(n):
   for j in range(n):
       max_rain = max(max_rain, og_graph[i][j])

for rain in range(1, max_rain+1):
   graph = copy.deepcopy(og_graph)
   visited = [[True] * n for _ in range(n)]
   cnt = 0

   for i in range(n):
       for j in range(n):
           if graph[i][j] <= rain:
               visited[i][j] = False

   for i in range(n):
       for j in range(n):
           if visited[i][j]:
               dfs(i, j)
               cnt += 1

   answer = max(answer, cnt)
print(answer)
profile
안녕하세요!

0개의 댓글