๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œ ํ’€์ด/DFS,BFS

[๋ฐฑ์ค€]14502๋ฒˆ: ์—ฐ๊ตฌ์†Œ

by syLim___ 2023. 3. 11.
728x90

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

 

14502๋ฒˆ: ์—ฐ๊ตฌ์†Œ

์ธ์ฒด์— ์น˜๋ช…์ ์ธ ๋ฐ”์ด๋Ÿฌ์Šค๋ฅผ ์—ฐ๊ตฌํ•˜๋˜ ์—ฐ๊ตฌ์†Œ์—์„œ ๋ฐ”์ด๋Ÿฌ์Šค๊ฐ€ ์œ ์ถœ๋˜์—ˆ๋‹ค. ๋‹คํ–‰ํžˆ ๋ฐ”์ด๋Ÿฌ์Šค๋Š” ์•„์ง ํผ์ง€์ง€ ์•Š์•˜๊ณ , ๋ฐ”์ด๋Ÿฌ์Šค์˜ ํ™•์‚ฐ์„ ๋ง‰๊ธฐ ์œ„ํ•ด์„œ ์—ฐ๊ตฌ์†Œ์— ๋ฒฝ์„ ์„ธ์šฐ๋ ค๊ณ  ํ•œ๋‹ค. ์—ฐ๊ตฌ์†Œ๋Š” ํฌ

www.acmicpc.net


์ผ๋‹จ ๋ณด์ž๋งˆ์ž bfs๋ผ๋Š” ์ƒ๊ฐ์ด ๋“ค์—ˆ๋‹ค

 

๋ฒฝ์„ ์–ด๋–ป๊ฒŒ ์„ธ์šธ์ง€๊ฐ€ ๊ณ ๋ฏผ์ด ๋งŽ์ด ๋์—ˆ๋‹ค.

์‹œ๊ฐ„์ œํ•œ๋„ 2์ดˆ๋กœ ๋„๋„ํ•˜๊ณ , n๊ณผ m๋„ 8์ดํ•˜๋กœ ๋งค์šฐ ์ž‘๊ธด ํ•˜์ง€๋งŒ

๊ทธ๋ž˜๋„ ๋‹ค ํ•ด๋ณด๋Š” ๊ฑด ์ข€ ์˜ค๋ฐ”๋ผ๋Š” ์ƒ๊ฐ์ด ๋“ค์—ˆ๊ธฐ ๋•Œ๋ฌธ์ž„.

 

๊ทธ๋Ÿฐ๋ฐ ๋‹ค ํ•ด๋ณด๋Š” ๊ฑฐ ๋ง๊ณ ๋Š” ๋‹ค๋ฅธ ์•„์ด๋””์–ด๊ฐ€ ๋„์ €ํžˆ ๋– ์˜ค๋ฅด์ง€ ์•Š์•„์„œ ๋‹ค ํ•ด๋ดค๋‹ค.

์ฝ”๋“œ๋Š” ์ข€ ๋”๋Ÿฝ์ง€๋งŒ, ๋‹คํ–‰ํžˆ ์ •๋‹ต ํŒ์ • ๋ฐ›๊ธด ํ–ˆ์Œ.

from itertools import combinations
from collections import deque
import sys 
input = sys.stdin.readline

n,m = map(int,input().split())
arr=[]
for i in range(n):
  arr.append(list(map(int,input().split())))

๋ฒฝ์„ ์„ธ์šธ ์ขŒํ‘œ๋“ค ์กฐํ•ฉ ๋ฆฌ์ŠคํŠธ ๋งŒ๋“ค๊ธฐ
zero=[]
for i in range(n):
  for j in range(m):
    if arr[i][j]==0:
      zero.append((i,j))
combi = list(combinations(zero,3))

answer=0
q=deque()
dx,dy = [-1,1,0,0],[0,0,1,-1]
arr2=[[0]*m for _ in range(n)]
for c in range(len(combi)):
  #๋ฐฐ์—ด ๊ฐ’ ๋ณต์‚ฌํ•ด์ฃผ๊ธฐ
  for i in range(n):
    for j in range(m):
      arr2[i][j]=arr[i][j]
      if arr[i][j]==2:
        q.append((i,j))
  p1,p2,p3=combi[c]
  #๋ฒฝ์„ธ์šฐ๊ธฐ
  arr2[p1[0]][p1[1]]=1
  arr2[p2[0]][p2[1]]=1
  arr2[p3[0]][p3[1]]=1

  #bfs-->๋ฐ”์ด๋Ÿฌ์Šค ๊ฐ์—ผ์‹œํ‚ค๊ธฐ
  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 and arr2[nx][ny]==0:
        arr2[nx][ny]=2
        q.append((nx,ny))

  #์•ˆ์ „์˜์—ญ ์„ธ๊ธฐ
  cnt=0
  for i in range(n):
    for j in range(m):
      if arr2[i][j]==0:
        cnt+=1
  answer = max(answer,cnt)

print(answer)

 

 

728x90