βλ¬Έμ
https://www.acmicpc.net/problem/7569
λ©λͺ¨λ¦¬: 227700 KB, μκ°: 696 ms
λλΉ μ°μ νμ, κ·Έλν μ΄λ‘ , κ·Έλν νμ
μ² μμ ν λ§ν λμ₯μμλ ν λ§ν λ₯Ό 보κ΄νλ ν° μ°½κ³ λ₯Ό κ°μ§κ³ μλ€. ν λ§ν λ μλμ κ·Έλ¦Όκ³Ό κ°μ΄ 격μλͺ¨μ μμμ μΉΈμ νλμ© λ£μ λ€μ, μμλ€μ μμ§μΌλ‘ μμ μ¬λ €μ μ°½κ³ μ 보κ΄νλ€.
μ°½κ³ μ 보κ΄λλ ν λ§ν λ€ μ€μλ μ μ΅μ κ²λ μμ§λ§, μμ§ μ΅μ§ μμ ν λ§ν λ€λ μμ μ μλ€. λ³΄κ΄ ν νλ£¨κ° μ§λλ©΄, μ΅μ ν λ§ν λ€μ μΈμ ν κ³³μ μλ μ΅μ§ μμ ν λ§ν λ€μ μ΅μ ν λ§ν μ μν₯μ λ°μ μ΅κ² λλ€. νλμ ν λ§ν μ μΈμ ν κ³³μ μ, μλ, μΌμͺ½, μ€λ₯Έμͺ½, μ, λ€ μ¬μ― λ°©ν₯μ μλ ν λ§ν λ₯Ό μλ―Ένλ€. λκ°μ λ°©ν₯μ μλ ν λ§ν λ€μκ²λ μν₯μ μ£Όμ§ λͺ»νλ©°, ν λ§ν κ° νΌμ μ μ λ‘ μ΅λ κ²½μ°λ μλ€κ³ κ°μ νλ€. μ² μλ μ°½κ³ μ 보κ΄λ ν λ§ν λ€μ΄ λ©°μΉ μ΄ μ§λλ©΄ λ€ μ΅κ² λλμ§ κ·Έ μ΅μ μΌμλ₯Ό μκ³ μΆμ΄ νλ€.
ν λ§ν λ₯Ό μ°½κ³ μ 보κ΄νλ 격μλͺ¨μμ μμλ€μ ν¬κΈ°μ μ΅μ ν λ§ν λ€κ³Ό μ΅μ§ μμ ν λ§ν λ€μ μ λ³΄κ° μ£Όμ΄μ‘μ λ, λ©°μΉ μ΄ μ§λλ©΄ ν λ§ν λ€μ΄ λͺ¨λ μ΅λμ§, κ·Έ μ΅μ μΌμλ₯Ό ꡬνλ νλ‘κ·Έλ¨μ μμ±νλΌ. λ¨, μμμ μΌλΆ μΉΈμλ ν λ§ν κ° λ€μ΄μμ§ μμ μλ μλ€.
βπ»νμ΄
2024.11.04 - [Coding Test] - [λ°±μ€] 7576.ν λ§ν /Python - Gold5
[λ°±μ€] 7576.ν λ§ν /Python - Gold5
βλ¬Έμ https://www.acmicpc.net/problem/7576μ±λ₯ μμ½μ½λ1 β‘οΈ λ©λͺ¨λ¦¬: 156792 KB, μκ°: 460 msμ½λ2 β‘οΈ λ©λͺ¨λ¦¬: 228982 KB, μκ°: 448 ms λ¬Έμ μ€λͺ μ² μμ ν λ§ν λμ₯μμλ ν λ§ν λ₯Ό 보κ΄νλ ν° μ°½κ³ λ₯Ό κ°
lucy-devblog.tistory.com
μ΄ λ¬Έμ λ BFSλ‘ λ¨μ§ κΈ°μ‘΄ ν λ§ν 2μ°¨μμμ 3μ°¨μμΌλ‘ λ°κΌμ λΏμ΄λ€.
λ§μ°¬κ°μ§λ‘ λ¨Όμ μ΅μ ν λ§ν κ° μλ μμΉλ₯Ό μ°Ύμμ νμ λ£λλ€. νμ λ£μ μμΉμ λ°λΌ xμΆ, yμΆ, zμΆμΌλ‘ λκ°μ μ μ μΈνκ³ μ΅μ§ μμ ν λ§ν μ μμΉλ₯Ό μ°Ύλλ€. μ΅μ§ μμ ν λ§ν λ₯Ό 1λ‘ λ°κΏμ μ΅μ ν λ§ν λ‘ κΈ°λ‘νκ³ μ’νμ λ μ§λ₯Ό κ°μ΄ κΈ°λ‘νμ¬ νμ λ£λλ€.
ν λ§ν λ₯Ό λ€ μ΅μ ν λ§μ½ μ΅μ ν λ§ν μ μν₯μ λ°μ§ λͺ»ν΄ μ΅μ§ μμ ν λ§ν κ° λ¨μμλ€λ©΄ -1μ μΆλ ₯νλ€.
π»μ½λ
import sys
from collections import deque
input = sys.stdin.readline
# 1 -> μ΅μ ν λ§ν , 0 -> μ΅μ§ μμ ν λ§ν , -1 -> λΉ κ³³
M, N, H = map(int, input().split()) #M -> x, N -> y, H -> z
graph = []
for _ in range(H):
box = []
for _ in range(N):
box.append(list(map(int, input().split())))
graph.append(box)
dx = [-1, 1, 0, 0, 0, 0]
dy = [0, 0, -1, 1, 0, 0]
dz = [0, 0, 0, 0, -1, 1]
q = deque()
def bfs():
day = 0
while q:
cx, cy, cz, d = q.popleft()
for i in range(6):
nx, ny, nz = cx + dx[i], cy + dy[i], cz + dz[i]
if 0 <= nx < M and 0 <= ny < N and 0 <= nz < H:
if graph[nz][ny][nx] == 0:
graph[nz][ny][nx] = 1
day = d + 1
q.append((nx, ny, nz, d + 1))
return day
# μ΅μ ν λ§ν μλ μμΉ νμ
for z in range(H):
for y in range(N):
for x in range(M):
if graph[z][y][x] == 1:
q.append((x, y, z, 0))
res = bfs()
if any(graph[i][j][k] == 0 for i in range(H) for j in range(N) for k in range(M)):
print(-1)
else:
print(res)
πνκΈ°
μ²μμ κ·Έλ₯ 2μ°¨μ λ°°μ΄μ κ΄νΈ νλλ§ λ μμμ£Όλ©΄ 3μ°¨μ λλ μ€ μμλλ° μλμλ€..
'Coding Test > Algorithms' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[λ°±μ€] 16928. λ±κ³Ό μ¬λ€λ¦¬ κ²μ/Python - Gold5 (0) | 2025.02.10 |
---|---|
[λ°±μ€] 1012. μ κΈ°λ λ°°μΆ/Python - Silver 2 (0) | 2025.02.06 |
[λ°±μ€] 2667. λ¨μ§λ²νΈλΆμ΄κΈ°/Python - Silver 1 (0) | 2025.02.05 |
[λ°±μ€] 24480. μκ³ λ¦¬μ¦ μμ - κΉμ΄ μ°μ νμ 2/Python - Silver 2 (0) | 2025.02.04 |
[νλ‘κ·Έλλ¨Έμ€] ν° μ λ§λ€κΈ°/Python - Lv.2 (0) | 2025.01.27 |