1. 주변에 갈 수 있는 길이 없고 ,
2. 벽을 부셔야 하는데 현재가 밤일때
1번에 대해서,
주변에 갈 수 있는 길이 있더라도, 기다렸다가 벽을 부수는게 이득일 수 있기 때문입니다.
예를 들어, 다음과 같은 예제에서 길이 있으면 기다리지 않고 무조건 간다고 하면
24일의 시간이 걸립니다.
하지만 x,y(6,6)에서 하루 기다린 후 x,y(6,7)로 이동한다면 15일의 시간만 소요됩니다.
따라서 위 코드가 정상적으로 동작하는 것입니다.
16933번 - 벽 부수고 이동하기 3
1. 주변에 갈 수 있는 길이 없고 ,
2. 벽을 부셔야 하는데 현재가 밤일때
1번에 대해서,
주변에 갈 수 있는 길이 있더라도, 기다렸다가 벽을 부수는게 이득일 수 있기 때문입니다.
예를 들어, 다음과 같은 예제에서 길이 있으면 기다리지 않고 무조건 간다고 하면
24일의 시간이 걸립니다.
하지만 x,y(6,6)에서 하루 기다린 후 x,y(6,7)로 이동한다면 15일의 시간만 소요됩니다.
따라서 위 코드가 정상적으로 동작하는 것입니다.
감사합니다
댓글을 작성하려면 로그인해야 합니다.
shinbian11 3년 전
이 문제에서, 다른 곳으로 이동하지 않고 낮과 밤만 보내는 경우도 생각해야 한다고 했는데, 해답을 보니까 그때의 조건을 57번째 줄처럼 해놓앗더라고요, 저부분이 이해가 안됩니다. wall[x][y][z][1 - day] == 0 이라는 조건이 왜 다음 칸으로 이동하지 않는다는 의미인가요?
물론 wall[x][y][z][1 - day] == 0 이라는 의미는, 현재 위치에서 움직이지 않고, 낮과 밤만 바꾸었을 때는 방문한 적이 없다! 라는 의미인건 알고 있는데요.
제가 궁금한건, 가만히 있는다는 의미는,
1. 주변에 갈 수 있는 길이 없고 ,
2. 벽을 부셔야 하는데 현재가 밤일때
>> 이런 경우에만 가만히 있어야 하는 걸로 이해했는데요. 그럼 거기에 따른 처리를 if문의 조건문에 포함시켜주어야 하는 거 아닌가요?
예를 들면 모든 a[nx][ny][z][day]== 1이고(사방이 벽), day==1 (1을 밤이라 가정했을 때) >> 이러한 조건이 있어야 하는거 아닌가요?
어떻게 저렇게 간단하게 생각을 할 수 있는지가 궁금하면서도 부럽습니다. 너무 어렵게 접근하는것일까요?