728x90
https://www.acmicpc.net/problem/14502
import sys
from collections import deque
import copy
input = sys.stdin.readline
dx = [-1, 1, 0, 0]
dy = [0, 0, -1, 1]
def bfs():
queue = deque()
tmp_graph = copy.deepcopy(graph)
for i in range(N):
for j in range(M):
if tmp_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 0 <= nx < N and 0 <= ny < M:
if tmp_graph[nx][ny] == 0:
tmp_graph[nx][ny] = 2
queue.append((nx, ny))
global answer
ans = 0
for i in range(N):
ans += tmp_graph[i].count(0)
answer = max(answer, ans)
# print(answer)
def makewall(cnt):
if cnt == 3:
bfs()
return
for i in range(N):
for j in range(M):
if graph[i][j] == 0:
graph[i][j] = 1
makewall(cnt + 1)
graph[i][j] = 0
N, M = map(int, input().split())
graph = []
for i in range(N):
graph.append(list(map(int, input().split())))
answer = 0
makewall(0)
print(answer)
시간 초과 이슈로 여러번 바꿔서 풀어봤지만.. 결국 Pypy로 제출하니 성공했던 문제.. 다른 사람들의 정답 코드를 봐도 PyPy가 대부분인 것을 보아하니 어쩔수없는 부분인가 보다.. C++을 다시 해야하나.. ㅠ
728x90
'Study > Coding Test' 카테고리의 다른 글
[백준] 1339 - 단어 수학 Python (0) | 2023.10.11 |
---|---|
[백준] 11047 - 동전 0 Python (0) | 2023.10.10 |
[백준] 2156 - 포도주 시식 Python (0) | 2023.10.10 |
[백준] 1406 - 에디터 Python (0) | 2023.10.10 |
[백준] 1912 - 연속합 Python (0) | 2023.10.09 |