백준 7576 토마토 푸는 중

Updated:

1. 문제

image



2. 풀이

import collections       #해당 문제는 디큐, 덱 사용; 기존 리스트는 멀티스레드

'''
하루 후, 익은 토마토 인접한 안익은 토마토가 익음
모든 토마토가 익을 때 까지 걸리는 최소 일 수
토마토가 들어있지 않을 수 있음
M: 상자 가로
N: 상자 세로
0: 안익음
1: 익음
-1: 없음
모든 토마토가 익는 최소 일 수 출력
저장시부터 모두 익은 상태: 0
모두 익지 못하는 상태: -1
'''
# 필요한 정보 입력받음
M,N = map(int, input().split())
check = [[0 for _ in range(M)] for _ in range(N)]
myBox = []

# 토마토 상자 정보 입력받음
for _ in range(N):
    line = input().split(' ')
    line = [int(_) for _ in line]
    myBox.append(line)
print(myBox)

# 방향키 설정
directions = (0,1),(0,-1),(1,0),(-1,0)

# 함수 생성
def tomato():
    global directions, check, N, M, myBox
    deq = collections.deque()    
    while deq:
        x,y = deq.pop(0)
        if check[x][y] == 0:      #방문하지 않았다면
            check[x][y] = 1      #방문체크
            for dx, dy in directions:   #주변 칸 좌표 확인
                newX = x + dx
                newY = y + dy
                if 0<= newX < M and 0<= newY < N    #해당 좌표가 범위를 벗어나지 않는다면
                deq.append((newX,newY))             #다음에 작업하도록 deq에 추가 




# extend(): append랑 다르게 구분해서 추가 
# collections.deque.extendleft(): 좌측
# collections.deque.extend(): 우측

# pop()
# colections.deque.pop(): 우측
# colections.deque.popleft(): 좌측