본문 바로가기

2023하계모각코

2023 하계모각코3회차 개인 목표 및 결과

일시

2023-07-22 13:00~ 16:00

목표

3회차에서는 부르트포스 알고리즘 문제를 풀어볼 생각이다.

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

 

14502번: 연구소

인체에 치명적인 바이러스를 연구하던 연구소에서 바이러스가 유출되었다. 다행히 바이러스는 아직 퍼지지 않았고, 바이러스의 확산을 막기 위해서 연구소에 벽을 세우려고 한다. 연구소는 크

www.acmicpc.net

결과

import sys
import copy
from collections import deque

input = sys.stdin.readline

dx = [0,0,-1,1]
dy = [1,-1,0,0]

N, M = map(int, input().split())
arr = [list(map(int, input().split())) for _ in range(N)]
ans = 0
q = deque()

def bfs():
    global ans
    w = copy.deepcopy(arr)
    for i in range(N):
        for j in range(M):
            if w[i][j]==2:
                q.append([i,j])

    while q:
        x, y = q.popleft()
        for i in range(4):
            nx = x + dx[i]
            ny = y + dy[i]
            if 0 <= nx < N and 0 <= ny < M:
                if w[nx][ny]==0:
                    w[nx][ny] = 2
                    q.append([nx,ny])
    cnt = 0
    for i in w:
        cnt+=i.count(0)
    ans = max(ans,cnt)

def wall(w):
    if w==3:
        bfs()
        return
    for i in range(N):
        for j in range(M):
            if arr[i][j]==0:
                arr[i][j]=1
                wall(w+1)
                arr[i][j]=0

wall(0)
print(ans)

어려운문제를 풀어본것같다