dp는 쓸까하다가 까딱 잘못하면 메모리 터질거같기도 했고 정확성 10분은 넉넉해서 그냥 안썼음
solve(board, myloc, enemyloc)으로 재귀돌림
반환형은 bool isWin, int pathCount
1) 나랑 상대방이랑 같은 발판에 있을때 내가 움직이면 승리하므로 (true, 1) 반환
2) 내가 움직일 수 있는 발판이 하나도 없으면 패배하므로 (false, 0) 반환
3) 내가 움직일 수 있는 발판들 배열을 순회하면서
solve(nextBoard, enemyloc, myNextloc) 이거 다 가져옴
4) 3에서 가져온 solve 결과값 중에 isWin=false가 하나라도 있으면 상대방이 무조건 패배하는 수가 있다는 소리이므로 나는 무조건 승리함. 이 경우 가장 빠르게 이기는 경로를 선택해 주면 됨. 따라서 false인 경로중 pathCount가 가장 작은 경로를 택해서 +1해주고 반환함.
5) isWin=false가 하나도 없다면 나는 무조건 패배한다는 소리이므로 가장 느리게 지는 경로를 선택하면 됨. 그 경로의 pathCount를 +1해서 반환함.
6) solve(initBoard, aloc, bloc) 하면 끝
- dc official App
여기 7번 푼 새끼가 있을 거 같냐
그냥 백트래킹도 dfs로 돌릴수있는거임
백트래킹 자체가 dfs의 일부라고 보면 되나? 8퀸풀때 한번 백트래킹 들어보고 그 뒤로는 잘 못들어봐서 - dc App
그럴듯
백트래킹이 dfs의 일부라는건 개소리임. 백트래킹의 핵심은 가지치기인데 이걸 구현하는 방법은 여러가지가 있음. 보통의 경우 그냥 귀찮으니까 dfs를 사용하는거임