다음 라운드에 방문할 노드를 temp 변수에 담아두고,
while 문이 종료되면 q에 temp를 넣는 방식
while True:
temp = deque([])
while q:
x, y, time = q.popleft()
for k in range(4):
xx = x + dx[k]
yy = y + dy[k]
if 0 <= xx < h and 0 <= yy < w:
if data[xx][yy] == "." and visited[xx][yy] == 0:
continue
visited[xx][yy] = 1
temp.append([xx, yy, time + 1])
if not temp:
break
q = temp
for문 범위를 업데이트 전 q의 길이로 설정
👉 temp변수가 필요 없어진다.⭐⭐
while q:
for _ in range(len(q)):
x, y, time = q.popleft()
for k in range(4):
xx = x + dx[k]
yy = y + dy[k]
if 0 <= xx < h and 0 <= yy < w:
if data[xx][yy] == "." and visited[xx][yy] == 0:
visited[xx][yy] = 1
q.append([xx, yy, time + 1])