wjavm2   4년 전

계속 결과가 뜨지 않습니다..ㅜㅜ

뭐가 문제여서 결과가 뜨지 않는건지답답합니다ㅠㅠ 이틀째풀고잇어여..

로직은이해가는데..ㅠㅠㅠ답답해여

clrmt   4년 전

디버거를 켜면 72번째 줄에서 액세스 위반이 나왔다고 뜹니다. 이때의 nrx와 nbx는 음수라고 하는군요.

wjavm2   4년 전

while (1) 

 { nrx += dx[i];

 nry += dy[i];

 if (map[nrx][nry] == '#' || map[nrx][nry] == 'O') break; } 

부분을 지우고 다른 조건으로 설정해주니까 해결되었네요!!

그런데 궁금한게 있는데 while문에서 위의 조건과 아래 정답으로 처리된 while문이 무슨차이일까요?? 왜  if (map[nrx][nry] == '#' || map[nrx][nry] == 'O') break;이 조건을 이용하면 프로그램이 실행이 안되는지 궁금합니다..

그리구 visit배열을 2차원 두개로 이용하면 왜 안되는지도 궁금합니다!!

franj   4년 전

map[nby][nbx] != '#' && map[nby][nbx] !='O'

이 조건문으로 바뀌어야되지 않나요?

or로 들어가면 항상 true일 것 같네요

wjavm2   4년 전

제가 코드를 아래와 같이 짠 이유가 while문으로 무한루프를 돌리고 맵에서 # 이나 O를 만났을 경우 break를 해주려고 한 의도 였거든요..

map[nby][nbx] != '#' && map[nby][nbx] !='O' 이코드를 조건문에 넣는다면 break를 써주는 조건과 맞지않을거같다고 생각해서 아래와 같이 OR로 조건문을 만들었어요!

제가 잘못이해하고있는건가요??ㅠㅠ

```c

while (1) {

 nrx += dx[i]; 

 nry += dy[i]; 

 if (map[nrx][nry] == '#' || map[nrx][nry] == 'O') break; 

 } 

```

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