greeneye   6년 전

다른질문에도 반례가 없네요..

혹시 아시는분 답변 부탁드립니다!!

jh05013   6년 전

게시판에 있는 반례지만 입력 형식에 맞지 않아서 수정했습니다. 6이 나와야 합니다.

6 6
1 1 0 
1 1 1 1 1 1
1 0 0 1 0 1
1 1 0 0 0 1
1 1 0 1 1 1
1 0 0 0 0 1
1 1 1 1 1 1

greeneye   6년 전

오 너무 감사합니다. 제가 코드에서 뒤로 후진할 수 없는 경우에 대해서 처리하지 않았네요.

if (x < 0 || y < 0 || x >= n || y >= m || map[x][y]==1) { // back 을 했는데 벽을 만나면
break; // 와일문을 중단합니다.


문제를 더 꼼꼼히 보고,주어진 케이스뿐만 아니라 여러 케이스를 돌아가게 하려면, 주어진 조건 하나하나 구현해야겠습니다!!


pby2016   6년 전

반례의 결과가 6이 어떻게 나오죠??

저는 아직 성공을 못했는데,

제가 아직 문제 이해를 못한건지 의심이 될 것 같아요
반례 결과가 6이 나오는 이유좀 설명해주실 분 계신가요??

아래는 제 코드의 결과입니다

1.png

jh05013   6년 전

어떻게 저기에 7이 들어갔나요? 3이 쓰인 칸에서 7이 쓰인 칸으로 가기 전에 그 사이에 있는 칸을 청소했어야 합니다.

pby2016   6년 전

저는
1 -> 2 -> 3 -> 4 -> 5 -> 6 ->

5 -> 1 -> 7 -> ...

이렇게 이동했습니다.

혹시, 6까지 갔다가

d=2 남 방향을 보고 있을 때, 6의 오른쪽이 벽이기 때문에 후진을 하는데,
후진하는 곳도 벽이어서 종료가 되는 상황인가요??

d=0 북쪽, 1 동쪽, 2 남쪽, 3 서쪽일 때,

제가 문제를 이해한대로 표현하면 이렇습니다.

1 (d=0 북)
2 (d=1 동)
3 (d=2 남)
4 (d=1 동)
5 (d=1 동)
6 (d=0 북)

일 때, 6에서 서,남,동,북 순서로 확인했을 때,

네 곳이 청소가 되있거나, 마지막인 북을 바라볼 때 벽이라서

(d=0)을 바라보고 1칸 후진을 했습니다.

6 (d=0 북) -----> 5 (d=0 북) ///////////////////////

네 곳이 청소가 되있거나, 벽이 있어서

(d=0)을 바라보고 1칸 후진을 했습니다.

5 (d=0 북) -----> 1 (d=0 북) ///////////////////////

1 아래에 7이 있는 자리가 0이어서 청소가 안 된 곳으로 처리되었습니다.
그래서 7로 이동했습니다.

1 (d=0 북) -----> 7 (d=2 남) ///////////////////////

jh05013   6년 전

벽을 통과할 수 없습니다.

"네 방향 모두 청소가 이미 되어있거나 벽이면서, 뒤쪽 방향이 벽이라 후진도 할 수 없는 경우에는 작동을 멈춘다."

pby2016   6년 전

아. 그리고 마지막 확인 때 후진해야할 상황이면, 회전을 하지 않는군요.


감사합니다!

pby2016   6년 전

아 회전을 하는데,

1이 벽이라는 말씀이셨군요 제가 잘못이해했는데 답답하셨을것같습니다.


감사합니다!!!

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