본문 바로가기
Problem Solving/BOJ

[BFS] python 2468 안전 영역

by Bokoo14 2023. 1. 25.

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

 

2468번: 안전 영역

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

www.acmicpc.net

# 2023.01.25
import sys
input=sys.stdin.readline
from collections import deque

n = int(input())
graph=[]
maxDepth = 0
for i in range(n):
    graph.append(list(map(int, input().split())))
    maxDepth = max(maxDepth, max(graph[i])) # 물이 찰 수 있는 최대 높이


dx = [1, -1, 0, 0]
dy = [0, 0, 1, -1]
def bfs(row, col, maxNum, visited):
    queue = deque()
    queue.append([row, col])
    visited[row][col]=True
    while queue:
        x, y = queue.popleft()
        for i in range(4):
            nx = dx[i]+x
            ny = dy[i]+y
            if 0<=nx<n and 0<=ny<n:
                # maxNum보다 높고, 방문하지 않아야 함
                if graph[nx][ny]>maxNum and not visited[nx][ny]:
                    visited[nx][ny]=True
                    queue.append([nx, ny])

answer = 0
# 0~최대로 찰 수 있는 물의 높이까지
for i in range(maxDepth):
    visited=[[False]*(n) for _ in range(n)] # 방문 여부 
    area=0
    for r in range(n):
        for c in range(n):
            if graph[r][c]>i and not visited[r][c]:
                bfs(r, c, i, visited)
                area+=1
    answer = max(answer, area)

print(answer)

'Problem Solving > BOJ' 카테고리의 다른 글

[BFS] 9205 맥주 마시면서 걸어가기  (0) 2023.01.27
[BFS] python 14503 로봇 청소기  (1) 2023.01.26
[BFS] python 5014 스타트링크  (0) 2023.01.24
[DFS] python 2644 촌수계산  (0) 2023.01.23
[Greedy] python 13904 과제  (0) 2023.01.22