bfs deque 업데이트

hyyyynjn·2021년 12월 10일
0

python 정리

목록 보기
21/26
post-thumbnail

다음 라운드에 방문할 노드를 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])

0개의 댓글