백준 7576 토마토 푸는 중
Updated:
1. 문제
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(): 좌측