rlawnddnjs12   2년 전

2일 동안 붙들고 있는 문제인데 해결이 안되네요,, 다른 분들 코드를 참고해서 해결할 수 있지만,

제가 생각해서 작성한 코드로 꼭 맞추고 싶어서 질문드립니다..


다른 부분보다 물고기를 이동 시키고 상어가 이동할 수 없다면 다시 전으로 돌아가 물고기를 전 위치, 방향으로 복구시켜야하는 부분이

이 문제에서 가장 까다로운 부분이라고 생각 됩니다.


저는 물고기의 이동횟수에 따라 그 상태의 맵을 3차원 배열에 저장해주었습니다. 가장 맨처음에 상어가 (0,0)으로 들어가는 것은 변하지 않으므로

가장 처음 물고기가 이동한 맵을 copy_adj[0][i][j]에 저장해주고 상어가 먹을 수 있는 곳이 존재한다면 백트래킹 기법으로 depth가 증가하면서 그 depth에 맞게 adj[depth][i][j]에 저장을 해주었습니다. 그리고 depth+1에서 상어가 먹을 수 있는 곳이 존재하지 않으면 return으로 다시 돌아가 전에 저장해주었던

adj[depth][i][j]맵으로 되돌려주었습니다.


물고기의 위치도 똑같이 깊이를 이용해서 변경해주고, 되돌리고 그런 방식으로 구현했습니다.

문제의 예제, 질문검색에 올려주신 예제는 모두 맞게 나옵니다 ㅜ


코드가 많이 길고 난잡하지만 도움 부탁드려요 ㅜㅜ

zigui   2년 전

163번 줄 if문이 물고기를 이동시킨 뒤에 실행되어야 합니다.

rlawnddnjs12   2년 전

감사합니다 ! 덕분에 해결할 수 있었습니다. 

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