๋ฌธ์
https://www.acmicpc.net/problem/14502
ํ์ด
# ๋ฐฑ์ค 14502๋ฒ ๋ฌธ์ - ์ฐ๊ตฌ์
from collections import deque
import copy
import sys
input = sys.stdin.readline
n, m = map(int, input().split())
graph = []
dx, dy = [0,0,-1,1], [1,-1,0,0]
for _ in range(n):
graph.append(list(map(int, input().split())))
def bfs():
queue = deque()
temp_graph = copy.deepcopy(graph)
for i in range(n):
for j in range(m):
if temp_graph[i][j] == 2:
queue.append((i,j))
while queue:
x, y = queue.popleft()
for i in range(4):
nx = x + dx[i]
ny = y + dy[i]
if nx < 0 or nx >= n or ny < 0 or ny >= m:
continue
if temp_graph[nx][ny] == 0:
temp_graph[nx][ny] = 2
queue.append((nx,ny))
cnt = 0
global answer
for i in range(n):
cnt += temp_graph[i].count(0)
answer = max(answer, cnt)
def makeWall(cnt,x,y):
if cnt == 3:
bfs()
return
# ์๊ฐ์ด๊ณผ๋ฅผ ๋ฐฉ์งํ๊ธฐ ์ํด
# ์ด์ ์ฌ๊ท์์ ํ์ํ ๋ฒ์๋ฅผ ์ ์ธํ๊ณ for๋ฌธ ์ํ
for i in range(x, n):
if i == x:
k = y
else:
k = 0
for j in range(k, m):
if graph[i][j] == 0:
graph[i][j] = 1
makeWall(cnt+1,i,j)
graph[i][j] = 0
answer = 0
makeWall(0,0,0)
print(answer)
'๐๏ธ Algorithm > ๐ฉ ๋ฐฑ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๐ฉ [๋ฐฑ์ค] [Python] [BFS/DFS] 4963๋ฒ_์ฌ์ ๊ฐ์ (0) | 2022.11.16 |
---|---|
๐ฉ [๋ฐฑ์ค] [Python] [BFS/DFS] 7562๋ฒ_๋์ดํธ์ ์ด๋ (0) | 2022.11.16 |
๐ฉ [๋ฐฑ์ค] [Python] [BFS/DFS] 18352๋ฒ_ํน์ ๊ฑฐ๋ฆฌ์ ๋์ ์ฐพ๊ธฐ (0) | 2022.11.16 |
๐ฉ [๋ฐฑ์ค] [Python] [Class3] 5430๋ฒ_AC (0) | 2022.11.16 |
๐ฉ [๋ฐฑ์ค] [Python] [Class3] 11403๋ฒ_๊ฒฝ๋ก ์ฐพ๊ธฐ (0) | 2022.11.15 |