๋ฐฑ์ค€

[๋ฐฑ์ค€-Python] ์•„๊ธฐ์ƒ์–ด2 : 17086๋ฒˆ

Yuuuki 2024. 6. 13. 22:42

๐Ÿฅˆ Silver2

 

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

 

 

 

โœ… ์ •๋‹ตํ’€์ด

import sys
from collections import deque

input = sys.stdin.readline


m, n = map(int, input().rstrip().split())


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

def bfs():
    result = 0


    while queue:
        cy, cx = queue.popleft()


        for i in range(8):
            ny, nx = dy[i] + cy, dx[i] + cx

            # ์ƒ์–ด๊ฐ€ ์—†๋Š” 0์— ๋Œ€ํ•ด ์ด๋™ ๊ฑฐ๋ฆฌ ๊ณ„์‚ฐ
            if 0 <= ny < m and 0 <= nx < n and board[ny][nx] == 0:
                board[ny][nx] = board[cy][cx] + 1
                result = max(result, board[ny][nx])
                queue.append((ny, nx))

    return result


board = [list(map(int, input().strip().split())) for row in range(m)]

queue = deque()

# ์•„๊ธฐ์ƒ์–ด๊ฐ€ ์œ„์น˜ํ•œ ๊ณณ(1) ํ์— ๋„ฃ๊ธฐ
for i in range(m):
    for j in range(n):
        if board[i][j] == 1:
            queue.append((i, j))


result = bfs()
print(result - 1)

 

์ตœ๋‹จ๊ฑฐ๋ฆฌ ๋ฌธ์ œ๋ฅผ ํ’€๋•Œ, ๋ฐฉ๋ฌธ์—ฌ๋ถ€๋ฅผ ์œ„ํ•œ ๋ฆฌ์ŠคํŠธ๋ฅผ ๋”ฐ๋กœ ๋งŒ๋“ค์—ˆ๋Š”๋ฐ ์ด๋ฒˆ์—” board ์ž์ฒด์— ์ด๋™๊ฑฐ๋ฆฌ๋ฅผ ์ €์žฅํ•˜๋Š” ์‹์œผ๋กœ ํ’€์ดํ•˜์˜€๋‹ค. 

์—ฌํƒœ ์ถœ๋ฐœ์ ์ด๋‚˜ ํƒ€๊ฒŸ ๋„์ฐฉ์ ์ด ์ฃผ์–ด์ง€๋Š” ๊ฒฝ์šฐ๋งŒ ๋ฌธ์ œ๋ฅผ ํ’€์–ด๋ณด๋‹ค๊ฐ€, ์ถœ๋ฐœ์ ์ด ์ •ํ•ด์ ธ์žˆ์ง€ ์•Š๊ณ  ์ƒ์–ด(1)์ด ์กด์žฌํ•˜๋Š” ๊ณณ๋“ค์˜ ๊ฑฐ๋ฆฌ๋“ค์— ๋Œ€ํ•ด ๊ฐ€์žฅ ๊ธด ๊ฑฐ๋ฆฌ๊ฐ’์„ ๊ตฌํ•˜๋Š” ๋ฌธ์ œ์˜€๋‹ค.

 

1์ด ์œ„์น˜ํ•œ ๊ณณ์— ๋Œ€ํ•œ ๊ฑฐ๋ฆฌ๋ฅผ ๊ตฌํ•˜๋Š”๋ฌธ์ œ์ด๊ธฐ ๋•Œ๋ฌธ์—, ํ์— ์ƒ์–ด๊ฐ€ ์œ„์น˜ํ•œ ์ขŒํ‘œ๋ฅผ ๋„ฃ์–ด์ฃผ์—ˆ๊ณ , ๊ฐ ๋ณด๋“œ ์นธ์—๋Š” ๊ฐ€์žฅ ๊ฐ€๊นŒ์šด ์ƒ์–ด ์œ„์น˜๋ฅผ ๋„๋‹ฌํ•˜๊ธฐ ์œ„ํ•œ ์ตœ๋‹จ๊ฑฐ๋ฆฌ๋ฅผ ๋‹ด๋Š”๋‹ค. 

 

 

 

 

 

๋จผ์ € ํ์— ๋„ฃ์€ ์•„๊ธฐ์ƒ์–ด์˜ ์ขŒํ‘œ๊ฐ’์„ ๊บผ๋‚ด ๊ทธ ์ขŒํ‘œ ๊ฐ’์„ ๊ธฐ์ค€์œผ๋กœ 8๋ฐฉํ–ฅ์œผ๋กœ ์ˆœํšŒํ•˜๋ฉด์„œ ๋ฐฉ๋ฌธํ•œ์  ์—†๋Š” 0์ธ๊ฐ’์— 1์„ ๋”ํ•ด ์ด๋™๊ฑฐ๋ฆฌ๋ฅผ ์—…๋ฐ์ดํŠธํ•ด์ค€๋‹ค. ๊ทธ๋Ÿผ ๊ทธ๋ฆผ๊ณผ ๊ฐ™์„๊ฒƒ์ด๋‹ค. 8๋ฐฉํ–ฅ์œผ๋กœ ์ˆœํšŒ๋ฅผ ํ•˜๋ฉด์„œ board๊ฐ’์„ ์ด๋™๊ฑฐ๋ฆฌ๋กœ ์—…๋ฐ์ดํŠธํ•ด์ฃผ๊ณ , ์ขŒํ‘œ๋ฅผ ํ์— ๋„ฃ์–ด์คŒ์œผ๋กœ์จ ์•„๊ธฐ์ƒ์–ด๊ฐ€ ๋ชจ๋‘ ํ์—์„œ ๋‚˜์˜ค๋ฉด ์ € ๊ทธ๋ฆผ๊ณผ ๊ฐ™์€ ์ƒํƒœ์—์„œ, ํ์— ๋„ฃ์–ด๋‘” ๊ฐ’์„ ๊ธฐ์ค€์œผ๋กœ ๋˜ 1์„ ๋”ํ•ด์„œ ์•„์ง ๋ฐฉ๋ฌธํ•˜์ง€ ์•Š์€ 0์˜ ์ขŒํ‘œ๋“ค์„ ์ฑ„์›Œ๋‚˜๊ฐ€๋Š” ๋ฐฉ์‹์ด๋‹ค. 

 

 

โ—๏ธ์ƒ์–ด์œ„์น˜๋ฅผ ๊ธฐ์ค€์œผ๋กœ ๋‹ด์€ board๊ฐ’(๊ฑฐ๋ฆฌ)๋Š” 0์ด ์•„๋‹Œ 1์„ ๊ธฐ์ค€์œผ๋กœ ์ด๋™๊ฑฐ๋ฆฌ๋ฅผ ๋‹ด์•˜๊ธฐ ๋•Œ๋ฌธ์—, ๊ฑฐ๋ฆฌ-1์„ ํ•ด์ค˜์•ผ ๋‹ต์„ ๊ตฌํ• ์ˆ˜์žˆ๋‹ค.