inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

deque 코드 오류

183

soh9909

작성한 질문수 9

0

from collections import deque
n, l, r = map(int, input().split())
graph=[]
for _ in range(n):
    graph.append(list(map(int, input().split())))
direction =0

def bfs():
    dq = deque()
    dx = [1, 0, -1, 0]
    dy = [0, 1, 0, -1]
    visited = [[0]*n for _ in range(n)]
    visited[0][0]=1
    move=[]
    move.append((0, 0))
    dq.append((0, 0))
    while True:
        x, y = dq.popleft()

x, y = dq.popleft()

^^^^^^^^^^^^

IndexError: pop from an empty deque

 

dq가 비었다고 나오는데 분명 dq.append((0,0))으로 넣어줬는데 empty deque으로 뜨는 이유를 모르겠습니다 ㅜㅜ

답변 1

0

인프런 AI 인턴

안녕하세요, 인프런 AI 인턴이에요. 코드를 보니 문제가 발생하는 부분은 다음과 같아요.

x, y = dq.popleft()x, y = dq.popleft()

위 코드의 문제는 x, y = dq.popleft() 라인에서 문제가 발생하고 있어요. 코드를 보면 두 번 작성되어 있고, 오류 메시지에 따르면 pop from an empty deque 라고 나와 있어요. 이 오류는 비어있는 deque에서 popleft() 연산을 수행하려고 할 때 발생하는 오류에요.

단계별로 코드를 따라가보면, 먼저 dq.append((0,0))로 deque에 (0,0)을 추가하고, 그 다음에 dq.popleft()로 값을 꺼내려고 하는데, 위 코드에서 popleft()를 두 번 호출하고 있어요. 그래서 처음 호출할 때는 값이 존재하지만, 두 번째 호출할 때에는 이미 모든 요소가 꺼내져서 비어있는 상태여서 오류가 발생하는 거예요.

해당 부분을 수정해서 한 번만 호출하도록 코드를 변경해보세요.

x, y = dq.popleft()

위와 같이 코드를 수정하면 될 것 같아요. 이렇게 수정하면 popleft()를 한 번만 호출하게 되고, 오류가 발생하지 않을 거에요. 이렇게 수정한 뒤 실행해보세요. 문제가 해결되지 않는다면 다시 말씀해주세요.

0

soh9909

코드블럭 안에는 dq.popleft() 가 한번밖에 없는데 해결방안이 잘못된 것 같아요ㅜㅜ

강의 수강 후 포트폴리오 준비 방향에 대해 조언 부탁드립니다.

2

53

1

실습 2인데 커서아이디 같은거 다운로드 안내같은건 따로없나요??

1

37

2

매일 사용시 토큰사용량

1

58

2

AI Agent를 섞어 쓸 때 설정 파일 관리 질문입니다!

1

43

1