li_la_4   1년 전

저만 유난히 런타임 에러가 많이 뜨네요...

해결방법이랑 잘못된 배열 인덱스를 참조하지 않는(?) 팁같은게 있을까요..?

sharon77770   1년 전

num의 사이즈가 문제인것 같아요

li_la_4   1년 전

음.. 잘 모르겠는데 조금만 더 자세히 설명해주실 수 있을까요??

pill27211   1년 전

큐에 pop연산도 빠졌고, int dc[4] = {0, 0, -1, 0}; 또한 int dc[4] = {0, 0, -1, 1}; 와 같이 바꿔 주셔야 합니다.

pill27211   1년 전

추가로 입력이 채 끝나지도 않았는데 bfs를 계속 동시에 진행해서 런타임 에러가 발생 하는 것 같네요.

li_la_4   1년 전

수정했습니다..!! 입력이 끝나지 않은 채 bfs를 돌리면 런타임 에러가 발생하나요..??

코드 구조상 저기서 돌려야 맞을 것 같은데..

pill27211   1년 전

추가로 입력이 채 끝나지도 않았는데 bfs를 계속 동시에 진행해서 런타임 에러가 발생 하는 것 같네요.

+방문 처리도 해주지 않아 bfs가 계속 헛 돌 것 같습니다..

pill27211   1년 전

애초에 맵 전체가 어떨지도 모르는 상황에서 bfs를 돌리는데 제대로 된 답이 나올리가 없습니다.

li_la_4   1년 전

house[nr][nc] = 0을 해줌으로써 if문 마지막 조건때문에 if문이 실행되지 않아 방문처리는 상관없을 것 같은데 혹시 아닌가요 ㅜㅜ

li_la_4   1년 전

아하 그렇군요 수정해보겠습니다ㅏ

li_la_4   1년 전

입력 부분만 수정했는데 런타임 에러는 여전하네요 ㅜㅜ 

다른 부분에서 문제가 있을까요??

pill27211   1년 전

num이 선언만 되었을 뿐 아무런 연산(초기화, 추가 등)이 이뤄지지도 않았는데(vector <int> num;)

num[cnt]++; , sort(num.begin(), num.end()); 같은 행위는 이뤄질 수 없습니다.

li_la_4   1년 전

cnt크기만큼 벡터가 생성되는게 목적이었으니까 cnt가 세어질 때마다 push_back 해줬습니다 

런타임 에러는 해결되었는데 정답은 아니네요 ㅜㅜ

pill27211   1년 전

1. 작성하신 알고리즘에 의하면, 방문한 곳은 0으로 바꾸기 때문에 최초에 위치도 0으로 바꿔 주셔야 합니다.

-> 53행 if문 안에 house[i][j] = 0; 추가.

2. 32행에서 num[cnt]++; 와 같이 작성 하시면 허용 되지 않은 곳을 참조 하게 됩니다. 벡터의 push_back은 이뤄질 때 마다 해당 인덱스가 0, 1, 2, ...와 같이 오르는데 cnt는 ++된 상태이기 때문에 배열 인덱스가 0, 1, 2, ... 일 때 1, 2, 3, ...과 같이 오릅니다.

-> num[cnt - 1]++;

3. 2에서의 이유로 67행에서의 출력은 i = 1 부터가 아닌 i = 0부터 이뤄져야 합니다.

li_la_4   1년 전

생각보다 오류가 많더군요 ㅜㅜ 

덕분에 종합해서 아래 코드처럼 잘 해결했습니다 고맙습니다 ^^ 

실력을 좀 더 키우고 꼼꼼해져야겠네요...

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