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)