문제
입력
출력
예제 입력, 예제 출력
노트
로직
1. 안전지역에서의 최대 높이(max_len)를 구한다.
2. 0부터 max_len까지 돌리면서
2-1. 매번 새로운 board를 가지고와서 해야함 -> deepcopy
2-2. for i in range(max_len + 1)이면 l보다 작거나 같으면 0으로 표시
2-3. bfs돌면서 1인 영역 갯수를 찾기 -> 안전영역 갯수(cnt)를 매번 구하면서 mymax에 갱신
코드
import copy
N = int(input())
board = [list(map(int, input().split())) for _ in range(N)]
temp = 0
for i in range(N):
for j in range(N):
if temp < board[i][j]:
temp = board[i][j]
near = [(0, -1), (0, 1), (1, 0), (-1, 0)]
mymax = 0
for i in range(temp + 1):
bd = copy.deepcopy(board)
for n in range(N):
for m in range(N):
if bd[n][m] <= i:
bd[n][m] = 0
cnt = 0
for n in range(N):
for m in range(N):
if bd[n][m] != 0:
q = [[n, m]]
cnt += 1
bd[n][m] = 0
while q:
x, y = q.pop(0)
for a, b in near:
xi, yi = x + a, y + b
if 0 <= xi < N and 0 <= yi < N and bd[xi][yi] != 0:
bd[xi][yi] = 0
q.append([xi, yi])
if mymax < cnt:
mymax = cnt
print(mymax)
'알고리즘' 카테고리의 다른 글
[baekjoon] 7576. 토마토 (0) | 2020.06.29 |
---|---|
[programmers] 크레인 인형뽑기 게임 (0) | 2020.06.27 |
[baekjoon] 2667. 단지 내 수 세기 (0) | 2020.06.25 |
[programmers] 괄호 변환 (0) | 2020.06.25 |
[programmers] 문자열 압축 (0) | 2020.06.24 |