๐ค๋ฌธ์ ํด๊ฒฐ
1. BFS | silver1
2. ์ต์ํ ๋งํ (๊ฐ์ด 1)๋ฅผ ์ฐพ์์ ๋ฆฌ์คํธ์ ๋ด๋๋ค.
3. 3๋ฒ์ ๋ฆฌ์คํธ๋ฅผ BFS๋ฅผ ์คํํ๋ค.
4. 4๋ฒ์ ๋ค ํ๊ณ ๋๋ฉด ์์ง ์ต์ง ์์ ํ ๋งํ (0)๊ฐ ์๋ ํ์ธํ๊ณ ์์ผ๋ฉด -1์ ๋ต์ผ๋ก ์ถ๋ ฅ
5. ์์ผ๋ฉด ๊ฐ์ฅ ํฐ ๊ฐ์์ -1ํ ๊ฐ์ ๋ต์ผ๋ก ์ถ๋ ฅ
๐จ 3์ฐจ์ ๋ฐฐ์ด์ด๋ผ์ ํท๊ฐ๋ฆด ์ ์๋ ๋ฌธ์ . ํ์ง๋ง ๋จ์ํ BFS๋ก ํ๋ฉด ๋๋ค.
๐ป์์ค ์ฝ๋
from _collections import deque
dx, dy, dz = [-1, 1, 0, 0, 0, 0], [0, 0, -1, 1, 0, 0], [0, 0, 0, 0, -1, 1] # ์๋์ธต ์์ธต ์ ๋ค ์ข ์ฐ
# BFS๋ก ์ฃผ๋ณ ํ ๋งํ ์ตํ๊ธฐ
def ripen():
while q:
x, y, z = q.popleft()
for k in range(6):
nx = x + dx[k]
ny = y + dy[k]
nz = z + dz[k]
if 0 <= nx < H and 0 <= ny < M and 0 <= nz < N:
if box[nx][ny][nz] == 0:
box[nx][ny][nz] = box[x][y][z] + 1
q.append((nx, ny, nz))
# 0์ด ์์ ๊ฒฝ์ฐ ํ ๋งํ ๋ ๋ค ์ต์ง ๋ชปํจ, 0์ด ์์ผ๋ฉด day๋ฅผ return
def check_ripen():
max_day = 0
for i in range(H):
for j in range(M):
for k in range(N):
if box[i][j][k] == 0:
return -1
else:
max_day = max(max_day, box[i][j][k])
return max_day - 1
# ์์!!!!!!!!!!!!!!!!!!!!!!!!!!
N, M, H = map(int, input().split())
# ํ ๋งํ ์์ ์ฑ์ฐ๊ธฐ
box = []
for i in range(H):
step = [list(map(int, input().split())) for _ in range(M)]
box.append(step)
# ์ต์ ํ ๋งํ ์ฐพ๊ธฐ
q = deque()
for i in range(H):
for j in range(M):
for k in range(N):
if box[i][j][k] == 1:
q.append((i, j, k))
ripen()
answer = check_ripen()
print(answer)
๐๋ฌธ์ ํ์ธ
์ถ์ฒ : BACKJOON ONLINE JUDGE
๋ฌธ์ : https://www.acmicpc.net/problem/7569
1 ์ด | 256 MB | 24345 | 9525 | 6958 | 39.579% |
๋ฌธ์
์ฒ ์์ ํ ๋งํ ๋์ฅ์์๋ ํ ๋งํ ๋ฅผ ๋ณด๊ดํ๋ ํฐ ์ฐฝ๊ณ ๋ฅผ ๊ฐ์ง๊ณ ์๋ค. ํ ๋งํ ๋ ์๋์ ๊ทธ๋ฆผ๊ณผ ๊ฐ์ด ๊ฒฉ์๋ชจ์ ์์์ ์นธ์ ํ๋์ฉ ๋ฃ์ ๋ค์, ์์๋ค์ ์์ง์ผ๋ก ์์ ์ฌ๋ ค์ ์ฐฝ๊ณ ์ ๋ณด๊ดํ๋ค.
์ฐฝ๊ณ ์ ๋ณด๊ด๋๋ ํ ๋งํ ๋ค ์ค์๋ ์ ์ต์ ๊ฒ๋ ์์ง๋ง, ์์ง ์ต์ง ์์ ํ ๋งํ ๋ค๋ ์์ ์ ์๋ค. ๋ณด๊ด ํ ํ๋ฃจ๊ฐ ์ง๋๋ฉด, ์ต์ ํ ๋งํ ๋ค์ ์ธ์ ํ ๊ณณ์ ์๋ ์ต์ง ์์ ํ ๋งํ ๋ค์ ์ต์ ํ ๋งํ ์ ์ํฅ์ ๋ฐ์ ์ต๊ฒ ๋๋ค. ํ๋์ ํ ๋งํ ์ ์ธ์ ํ ๊ณณ์ ์, ์๋, ์ผ์ชฝ, ์ค๋ฅธ์ชฝ, ์, ๋ค ์ฌ์ฏ ๋ฐฉํฅ์ ์๋ ํ ๋งํ ๋ฅผ ์๋ฏธํ๋ค. ๋๊ฐ์ ๋ฐฉํฅ์ ์๋ ํ ๋งํ ๋ค์๊ฒ๋ ์ํฅ์ ์ฃผ์ง ๋ชปํ๋ฉฐ, ํ ๋งํ ๊ฐ ํผ์ ์ ์ ๋ก ์ต๋ ๊ฒฝ์ฐ๋ ์๋ค๊ณ ๊ฐ์ ํ๋ค. ์ฒ ์๋ ์ฐฝ๊ณ ์ ๋ณด๊ด๋ ํ ๋งํ ๋ค์ด ๋ฉฐ์น ์ด ์ง๋๋ฉด ๋ค ์ต๊ฒ ๋๋์ง ๊ทธ ์ต์ ์ผ์๋ฅผ ์๊ณ ์ถ์ด ํ๋ค.
ํ ๋งํ ๋ฅผ ์ฐฝ๊ณ ์ ๋ณด๊ดํ๋ ๊ฒฉ์๋ชจ์์ ์์๋ค์ ํฌ๊ธฐ์ ์ต์ ํ ๋งํ ๋ค๊ณผ ์ต์ง ์์ ํ ๋งํ ๋ค์ ์ ๋ณด๊ฐ ์ฃผ์ด์ก์ ๋, ๋ฉฐ์น ์ด ์ง๋๋ฉด ํ ๋งํ ๋ค์ด ๋ชจ๋ ์ต๋์ง, ๊ทธ ์ต์ ์ผ์๋ฅผ ๊ตฌํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ๋ผ. ๋จ, ์์์ ์ผ๋ถ ์นธ์๋ ํ ๋งํ ๊ฐ ๋ค์ด์์ง ์์ ์๋ ์๋ค.
์ ๋ ฅ
์ฒซ ์ค์๋ ์์์ ํฌ๊ธฐ๋ฅผ ๋ํ๋ด๋ ๋ ์ ์ M,N๊ณผ ์์์ฌ๋ ค์ง๋ ์์์ ์๋ฅผ ๋ํ๋ด๋ H๊ฐ ์ฃผ์ด์ง๋ค. M์ ์์์ ๊ฐ๋ก ์นธ์ ์, N์ ์์์ ์ธ๋ก ์นธ์ ์๋ฅผ ๋ํ๋ธ๋ค. ๋จ, 2 ≤ M ≤ 100, 2 ≤ N ≤ 100, 1 ≤ H ≤ 100 ์ด๋ค. ๋์งธ ์ค๋ถํฐ๋ ๊ฐ์ฅ ๋ฐ์ ์์๋ถํฐ ๊ฐ์ฅ ์์ ์์๊น์ง์ ์ ์ฅ๋ ํ ๋งํ ๋ค์ ์ ๋ณด๊ฐ ์ฃผ์ด์ง๋ค. ์ฆ, ๋์งธ ์ค๋ถํฐ N๊ฐ์ ์ค์๋ ํ๋์ ์์์ ๋ด๊ธด ํ ๋งํ ์ ์ ๋ณด๊ฐ ์ฃผ์ด์ง๋ค. ๊ฐ ์ค์๋ ์์ ๊ฐ๋ก์ค์ ๋ค์ด์๋ ํ ๋งํ ๋ค์ ์ํ๊ฐ M๊ฐ์ ์ ์๋ก ์ฃผ์ด์ง๋ค. ์ ์ 1์ ์ต์ ํ ๋งํ , ์ ์ 0 ์ ์ต์ง ์์ ํ ๋งํ , ์ ์ -1์ ํ ๋งํ ๊ฐ ๋ค์ด์์ง ์์ ์นธ์ ๋ํ๋ธ๋ค. ์ด๋ฌํ N๊ฐ์ ์ค์ด H๋ฒ ๋ฐ๋ณตํ์ฌ ์ฃผ์ด์ง๋ค.
์ถ๋ ฅ
์ฌ๋ฌ๋ถ์ ํ ๋งํ ๊ฐ ๋ชจ๋ ์ต์ ๋๊น์ง ์ต์ ๋ฉฐ์น ์ด ๊ฑธ๋ฆฌ๋์ง๋ฅผ ๊ณ์ฐํด์ ์ถ๋ ฅํด์ผ ํ๋ค. ๋ง์ฝ, ์ ์ฅ๋ ๋๋ถํฐ ๋ชจ๋ ํ ๋งํ ๊ฐ ์ต์ด์๋ ์ํ์ด๋ฉด 0์ ์ถ๋ ฅํด์ผ ํ๊ณ , ํ ๋งํ ๊ฐ ๋ชจ๋ ์ต์ง๋ ๋ชปํ๋ ์ํฉ์ด๋ฉด -1์ ์ถ๋ ฅํด์ผ ํ๋ค.
'Algorithm Problem > Python' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[python] ๋ฐฑ์ค - 1309. ๋๋ฌผ์ (0) | 2020.08.28 |
---|---|
[python] ๋ฐฑ์ค - 1992. ์ฟผ๋ํธ๋ฆฌ (0) | 2020.08.27 |
[python] ๋ฐฑ์ค - 2251. ๋ฌผํต (0) | 2020.08.25 |
[python] ๋ฐฑ์ค - 1495. ๊ธฐํ๋ฆฌ์คํธ (0) | 2020.08.24 |
[python] ๋ฐฑ์ค - 11660. ๊ตฌ๊ฐ ํฉ ๊ตฌํ๊ธฐ 5 (0) | 2020.08.23 |