1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
import sys
from collections import deque
 
input = sys.stdin.readline
 
M, N, H = map(int, input().split())
 
dx = [-100100]
dy = [0-10010]
dz = [00-1001]
 
board = [[list(map(int, input().split())) for _ in range(N)] for _ in range(H)]
 
 
def bfs():
    q = deque()
    for i in range(H):
        for j in range(N):
            for k in range(M):
                if board[i][j][k] == 1:
                    q.append((i, j, k))
 
    while q:
        x, y, z, = q.popleft()
 
        for n in range(6):
            nx = x + dx[n]
            ny = y + dy[n]
            nz = z + dz[n]
            if 0 <= nx < H and 0 <= ny < N and 0 <= nz < M and not board[nx][ny][nz]:
                board[nx][ny][nz] = board[x][y][z] + 1
                q.append((nx, ny, nz))
 
 
bfs()
ans = float("-inf")
for i in range(H):
    for j in range(N):
        for k in range(M):
            if board[i][j][k] == 0:
                ans = float("inf")
            ans = max(ans, board[i][j][k])
 
if ans == float("inf"):
    print("-1")
else:
    print(ans - 1)
 
cs




1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
import sys
from collections import deque
 
input = sys.stdin.readline
 
M, N, H = map(int, input().split())
 
dx = [-100100]
dy = [0-10010]
dz = [00-1001]
 
board = [[list(map(int, input().split())) for _ in range(N)] for _ in range(H)]
 
 
def bfs(a, b, c):
    q = deque()
    q.append((a, b, c))
 
    while q:
        x, y, z = q.popleft()
        for i in range(6):
            nx = x + dx[i]
            ny = y + dy[i]
            nz = z + dz[i]
            if 0 <= nx < H and 0 <= ny < N and 0 <= nz < M and board[nx][ny][nz] == 0:
                board[nx][ny][nz] = board[x][y][z] + 1
                q.append((nx, ny, nz))
 
 
for i in range(H):
    for j in range(N):
        for k in range(M):
            if board[i][j][k] == 1:
                bfs(i, j, k)
 
ans = float("-inf")
for i in range(H):
    for j in range(N):
        for k in range(M):
            if board[i][j][k] == 0:
                ans = float("inf")
            ans = max(ans, board[i][j][k])
 
if ans == float("inf"):
    print("-1")
else:
    print(ans - 1)
cs


30번 ~ 34번 코드를 bfs() 함수 안으로 넣기만 했을 뿐인데

아래 코드 제출시 오답, 위에 코드 제출시 정답입니다.

도대체 무슨 차이가 있는 건가요 ????