풀이
- 지역의 높이 중 가장 큰 값을 구한 다음
- 해당 지역의 높이 전까지 반복문을 돌려 height를 기준으로
- 안전한 영역의 최대 개수를 출력
import sys
from collections import deque
input = sys.stdin.readline
def bfs(height):
while q:
y,x = q.popleft()
for ny,nx in [[-1,0],[1,0],[0,-1],[0,1]]:
dy,dx = y+ny,x+nx
if 0<=dy<n and 0<=dx<n and not visit[dy][dx] and arr[dy][dx] > height:
visit[dy][dx] = 1
q.append([dy,dx])
n = int(input())
arr = [list(map(int,input().split())) for _ in range(n)]
result = 0
q = deque([])
for height in range(0, max([max(arr[i]) for i in range(n)])+1):
visit = [[0]*n for _ in range(n)]
cnt = 0
for i in range(n):
for j in range(n):
if not visit[i][j] and arr[i][j] > height:
cnt += 1
q.append([i,j])
bfs(height)
if cnt > result:
result = cnt
print(result)
'알고리즘' 카테고리의 다른 글
[백준, 파이썬, 11399번] ATM (0) | 2023.08.28 |
---|---|
[백준, 파이썬 , 10817번] 세 수 (0) | 2023.08.28 |
[백준, 10026번] 적록색약 (0) | 2023.08.23 |
[백준, 13116번] 30번 (0) | 2023.08.21 |
[백준, 9372번] 상근이의 여행 (0) | 2023.08.21 |