출처 : https://www.acmicpc.net/problem/1726
정답 : https://github.com/stemp12/study/blob/master/acmicpc.net/2016.08/1726.cpp
이 문제 역시 BFS문제이다. 아 정말 많이 푸는거 같다. 매일 풀고있다.
이문제는 내가 자주하는 실수를 하였는데 문제를 제대로 읽지 않았다. 그래서 참 여러번 코딩했다. 중간에 포기하고싶었다 ㅠㅠ
암튼 go라는 명령에는 1,2,3 중에 한칸을 움직일수 있으며, 방향역시 4방향으로 그때마다 값이 달라진다.
역시 메모리제이션이 필요한대, 초기에 dp만을 활용하여 최소값을 갱신하는 방식을 사용하니, 수가 커지니 오류가 발생했다.
이를 완벽히 해결하는 유일한 방법은 아마도 메모리제이션이 아닐까 싶다.
내가 오류가 발생한 이유는 방향을 고려하지 않았기 때문이므로, 방향을 고려하여 [][][4]를 만들어 각 방향별 최저값을 갱신하는 식으로 하였다. 그랬더니 정답이 나왔다.
이문제에서 go는 방향이 맞아야먄 진행 할 수 있으므로 초점을 맞춰야하는건 방향인 것이다.
'Algorithm' 카테고리의 다른 글
[AC] 5397 키로거 (0) | 2016.08.30 |
---|---|
[AC] 2206 벽 부수고 이동하기 (4) | 2016.08.30 |
[AC] 1325 효율적인 해킹 (0) | 2016.08.30 |
[AC] 1939 중량제한 (0) | 2016.08.30 |
[AC] 1600 말이 되고픈 원숭이 (0) | 2016.08.30 |