시작이 반

[백준] 7569번(python 파이썬) 본문

알고리즘/백준

[백준] 7569번(python 파이썬)

G_Gi 2021. 1. 7. 14:58
SMALL

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

 


7576번 2차원 토마토 문제와 같은 문제이다.

3차원 배열은 [z][x][y]인 것을 기억하자

또한 3차원 배열에서 Max값을 얻기 위해 쉽게 얻는 방법이 있는지 확인할려고 검색을 해본결과 2차원 배열에서 max(map(max, graph)) 이런식으로 하면 나온다고 하여 응용을 해서 max(map(max, max(graph)))를 사용하였는데 틀렸다고 나왔다.

map사용법을 아직 잘모름...

3중포문을 사용하여 Max값을 구함

 


from collections import deque
import sys

input = sys.stdin.readline
col, row, h = map(int, input().split())
graph = [[list(map(int, input().split())) for _ in range(row)] for _ in range(h)]
visited = [[[False] * col for _ in range(row)] for _ in range(h)]
dx = [-1, 1, 0, 0, 0, 0]
dy = [0, 0, -1, 1, 0, 0]
dz = [0, 0, 0, 0, -1, 1]

def Bfs(queue, graph, visited):
    while queue:
        cur_z, cur_x, cur_y = queue.popleft()

        for i in range(6):
            next_z = cur_z + dz[i]
            next_x = cur_x + dx[i]
            next_y = cur_y + dy[i]

            if 0 <= next_z < h and 0 <= next_x < row and 0 <= next_y < col:
                if not visited[next_z][next_x][next_y] and graph[next_z][next_x][next_y] == 0:
                    visited[next_z][next_x][next_y] = True
                    queue.append((next_z, next_x, next_y))
                    graph[next_z][next_x][next_y] = graph[cur_z][cur_x][cur_y] + 1

queue = deque()
for i in range(h):
    for j in range(row):
        for k in range(col):
            if graph[i][j][k] == 1:
                queue.append((i, j, k))
                visited[i][j][k] = True

Bfs(queue, graph, visited)

zero_flag = False
for i in range(h):
    for j in range(row):
        if 0 in graph[i][j]:
            zero_flag = True
            break

if not zero_flag:
    max_day = 0
    for i in range(h):
        for j in range(row):
            for k in range(col):
                max_day = max(max_day, graph[i][j][k])
    print(max_day - 1)

else:
    print(-1)

LIST

'알고리즘 > 백준' 카테고리의 다른 글

[백준] 1697번(python 파이썬)  (0) 2021.01.08
[백준] 14503번(python 파이썬)  (0) 2021.01.07
[백준] 7576번(python 파이썬)  (0) 2021.01.07
[백준] 2178번(python 파이썬)  (0) 2021.01.06
[백준] 1012번(python 파이썬)  (0) 2021.01.06