ad1259   3년 전

런타임 에러 왜 뜨는걸까요..?

dhyang24   3년 전

1. bfs() 함수를 정의하기 전에 print(bfs(0,0))이 있네요

2. 입력 받을때 저장을 2차원 배열안에 있는 int형식으로 하셨는데, 이러면 matrix[ddx][ddy] 에서 인덱스에러가 납니다. (예제를 예시로 들면, [[101111], [101010], [101011], [111011]] 으로 배열이 저장되어있는데 여기서 matrix[ddx] 은 길이가 1인, int를 포함한 인덱스입니다.) (제 생각에 입력 형태가 잘못된거같아요)

위와 같은점에서 에러가 납니다.

추가로,

3. 22번째 줄에서 함수를 호출만하고 함수의 리턴 값을 사용하고 있지 않은데, 의도된건지 모르겠습니다.

ad1259   3년 전

상세한 답변 감사합니다. 다만 이해가 가지 않는 것이 있는데

2번에 입력 형태가 잘못되었다는게 int -> str 이런 식으로 바꿔야 된다는 것인가요? 보통 저런 식으로 입력받지 않나요?

3번은 어떤 리턴 값을 말하는 것인가요? 리턴 값이 없어도 무방하지 않나요..?

ghghgh777   3년 전

2. split()는 str을 공백 기준으로 나눠서 리스트로 만들어줍니다.

그런데 입력 데이터를 보시면 각 줄은 '1 0 1 1 1 1'이 아니라 '101111' 식으로 들어오기 때문에, line 4가 의도하신 방식으로 작동하고 있지 않습니다. 예제 입력 1 기준으로 print(matrix)를 하시면 matrix가 [[101111], [101010], ...]로 들어가는 걸 확인하실 수 있습니다.

쉬운 해결책은 그냥 split()를 빼서 matrix = [list(map(int,input())) for _ in range(n)] 을 쓰시는 방법이 있습니다.

3. BFS 안에서 재귀 호출 하실 필요가 없습니다. 어차피 queue에 넣어주고 while문을 도니 그냥 line 22는 지우시면 됩니다.

댓글을 작성하려면 로그인해야 합니다.