λ¬Έμ
μ² μμ ν λ§ν λμ₯μμλ ν λ§ν λ₯Ό 보κ΄νλ ν° μ°½κ³ λ₯Ό κ°μ§κ³ μλ€. ν λ§ν λ μλμ κ·Έλ¦Όκ³Ό κ°μ΄ 격μ λͺ¨μ μμμ μΉΈμ νλμ© λ£μ΄μ μ°½κ³ μ 보κ΄νλ€.
μ°½κ³ μ 보κ΄λλ ν λ§ν λ€ μ€μλ μ μ΅μ κ²λ μμ§λ§, μμ§ μ΅μ§ μμ ν λ§ν λ€λ μμ μ μλ€. λ³΄κ΄ ν νλ£¨κ° μ§λλ©΄, μ΅μ ν λ§ν λ€μ μΈμ ν κ³³μ μλ μ΅μ§ μμ ν λ§ν λ€μ μ΅μ ν λ§ν μ μν₯μ λ°μ μ΅κ² λλ€. νλμ ν λ§ν μ μΈμ ν κ³³μ μΌμͺ½, μ€λ₯Έμͺ½, μ, λ€ λ€ λ°©ν₯μ μλ ν λ§ν λ₯Ό μλ―Ένλ€. λκ°μ λ°©ν₯μ μλ ν λ§ν λ€μκ²λ μν₯μ μ£Όμ§ λͺ»νλ©°, ν λ§ν κ° νΌμ μ μ λ‘ μ΅λ κ²½μ°λ μλ€κ³ κ°μ νλ€. μ² μλ μ°½κ³ μ 보κ΄λ ν λ§ν λ€μ΄ λ©°μΉ μ΄ μ§λλ©΄ λ€ μ΅κ² λλμ§, κ·Έ μ΅μ μΌμλ₯Ό μκ³ μΆμ΄ νλ€.
ν λ§ν λ₯Ό μ°½κ³ μ 보κ΄νλ 격μλͺ¨μμ μμλ€μ ν¬κΈ°μ μ΅μ ν λ§ν λ€κ³Ό μ΅μ§ μμ ν λ§ν λ€μ μ λ³΄κ° μ£Όμ΄μ‘μ λ, λ©°μΉ μ΄ μ§λλ©΄ ν λ§ν λ€μ΄ λͺ¨λ μ΅λμ§, κ·Έ μ΅μ μΌμλ₯Ό ꡬνλ νλ‘κ·Έλ¨μ μμ±νλΌ. λ¨, μμμ μΌλΆ μΉΈμλ ν λ§ν κ° λ€μ΄μμ§ μμ μλ μλ€.
μ λ ₯
첫 μ€μλ μμμ ν¬κΈ°λ₯Ό λνλ΄λ λ μ μ M,Nμ΄ μ£Όμ΄μ§λ€. Mμ μμμ κ°λ‘ μΉΈμ μ, Nμ μμμ μΈλ‘ μΉΈμ μλ₯Ό λνλΈλ€. λ¨, 2 ≤ M,N ≤ 1,000 μ΄λ€. λμ§Έ μ€λΆν°λ νλμ μμμ μ μ₯λ ν λ§ν λ€μ μ λ³΄κ° μ£Όμ΄μ§λ€. μ¦, λμ§Έ μ€λΆν° Nκ°μ μ€μλ μμμ λ΄κΈ΄ ν λ§ν μ μ λ³΄κ° μ£Όμ΄μ§λ€. νλμ μ€μλ μμ κ°λ‘μ€μ λ€μ΄μλ ν λ§ν μ μνκ° Mκ°μ μ μλ‘ μ£Όμ΄μ§λ€. μ μ 1μ μ΅μ ν λ§ν , μ μ 0μ μ΅μ§ μμ ν λ§ν , μ μ -1μ ν λ§ν κ° λ€μ΄μμ§ μμ μΉΈμ λνλΈλ€.
ν λ§ν κ° νλ μ΄μ μλ κ²½μ°λ§ μ λ ₯μΌλ‘ μ£Όμ΄μ§λ€.
μΆλ ₯
μ¬λ¬λΆμ ν λ§ν κ° λͺ¨λ μ΅μ λκΉμ§μ μ΅μ λ μ§λ₯Ό μΆλ ₯ν΄μΌ νλ€. λ§μ½, μ μ₯λ λλΆν° λͺ¨λ ν λ§ν κ° μ΅μ΄μλ μνμ΄λ©΄ 0μ μΆλ ₯ν΄μΌ νκ³ , ν λ§ν κ° λͺ¨λ μ΅μ§λ λͺ»νλ μν©μ΄λ©΄ -1μ μΆλ ₯ν΄μΌ νλ€.
https://www.acmicpc.net/problem/7576
π‘ νμ΄ λ° μ½λ
from collections import deque
m, n = map(int, input().split())
graph = []
queue = deque()
for i in range(n):
temp = list(map(int, input().split()))
graph.append(temp)
for j in range(m):
if temp[j] == 1:
queue.append((i,j))
dx = [-1, 1, 0, 0]
dy = [0, 0, -1, 1]
def bfs():
global queue
result = 1
while queue:
x, y = queue.popleft()
for i in range(4):
nx = x + dx[i]
ny = y + dy[i]
if nx<0 or ny<0 or nx>=n or ny>=m:
continue
if graph[nx][ny] == -1:
continue
if graph[nx][ny] == 0:
graph[nx][ny] = graph[x][y] + 1
queue.append((nx, ny))
result = max(result, graph[nx][ny])
return result -1
result = bfs()
for i in graph:
if 0 in i:
result = -1
break
print(result)
μ°μ , κ·Έλν μ 1μ μμΉλ₯Ό νμ λͺ¨λ λ£κ³ BFS μκ³ λ¦¬μ¦μ μ¬μ©νμ¬ μΈμ ν λ Έλλ₯Ό 1μ© λν΄μ§ κ°μΌλ‘ λ체νμλ€. μ΄ λ, κ·Έ κ°μ΄ κ°μ₯ ν΄ λλ₯Ό μ°Ύμ -1μ ν μλ₯Ό ν λ§ν κ° λͺ¨λ μ΅κΈ° μν΄ μ§λκ° μΌ μλ‘ νννμλ€. μ΄ λͺ¨λ κ³Όμ μ μνν ν κ·Έλνμ 0μ΄ λ¨μμλ€λ©΄ λͺ¨λ ν λ§ν κ° μ΅μ§ λͺ»ν κ²μ΄κΈ° λλ¬Έμ -1μ μΆλ ₯ν΄μ£Όλ μμΈμ²λ¦¬λ ν΄μ£Όμλ€.
μ²μ μ΄ λ¬Έμ λ₯Ό ν λ, κ·Έλν μ 1μ μμΉλ₯Ό νμ λͺ¨λ λ£λ κ³Όμ μμ index ν¨μλ₯Ό μ¬μ©ν΄μ 1μ μμΉλ₯Ό κΈ°λ‘νλ€. κ·Έλ¬λλ 첫 μ€μ 1μ΄ λ κ°μλ κ²½μ°μ λν μ²λ¦¬κ° μ λλ‘ μ΄λ£¨μ΄μ§μ§ μμλ€. μ΄ μ€λ₯λ₯Ό μ°Ύμλ΄λλ°μ κ½€λ λ§μ μκ°μ νλΉνλ€π₯ μμΌλ‘ index ν¨μλ₯Ό μ°κΈ° μ μλ μ£Όμκ° νμν κ² κ°λ€.
index ν¨μ... ν¨λΆλ‘ μ°μ§ λ§μ!!π
'Algorithm > π Baekjoon Judge' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[BOJ] λ°±μ€ 2468λ² μμ μμ - νμ΄μ¬(Python) (0) | 2021.07.18 |
---|---|
[BOJ] λ°±μ€ 2583λ² μμ ꡬνκΈ° - νμ΄μ¬(Python) (0) | 2021.07.17 |
[BOJ] λ°±μ€ 1697λ² μ¨λ°κΌμ§ - νμ΄μ¬(Python) (0) | 2021.07.15 |
[BOJ] λ°±μ€ 2667λ² λ¨μ§λ²νΈλΆμ΄κΈ° - νμ΄μ¬(Python) (0) | 2021.07.15 |
[BOJ] λ°±μ€ 2178λ² λ―Έλ‘ νμ - νμ΄μ¬(Python) (0) | 2021.07.15 |