알고리즘

백준 2468번 : 안전 영역(python)

jenyy 2021. 7. 26. 18:31

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

 

2468번: 안전 영역

재난방재청에서는 많은 비가 내리는 장마철에 대비해서 다음과 같은 일을 계획하고 있다. 먼저 어떤 지역의 높이 정보를 파악한다. 그 다음에 그 지역에 많은 비가 내렸을 때 물에 잠기지 않는

www.acmicpc.net

 

n = int(input())
data = [list(map(int,input().split())) for _ in range(n)]
max_value = max(max(data))
temp = [[0]*n for _ in range(n)]
dx = [-1,1,0,0]
dy = [0,0,-1,1]

def dfs(x,y,temp):
    q = [(x,y)]
    temp[x][y] = 0
    while q:
        x,y = q.pop()
        for i in range(4):
            nx,ny = x+dx[i],y+dy[i]
            if 0<=nx<n and 0<=ny<n and temp[nx][ny] == 1:
                temp[nx][ny] = 0
                q.append((nx,ny))

result = 1
for num in range(1,max_value+1):
    for i in range(n):
        for j in range(n):
            if data[i][j] <= num:
                temp[i][j] = 0 # 0이면 잠김
            else:
                temp[i][j] = 1

    count = 0
    for x in range(n):
        for y in range(n):
            if temp[x][y] == 1:
                dfs(x, y, temp)
                count += 1

    result = max(count,result)

print(result)