문제
백준 17070
BFS
설명
문제에서 방법의 수가 항상 1.000.000
보다 작다고 하기 때문에 가능한 풀이이다. BFS 는 대개 방문체크를 하지 않으면 경우의 수가 기하급수적으로 커지는데, 브루트포스 방법으로 풀라고 만든 제한으로 보인다.
시간 복잡도
O(\(3 ^ {\mathrm{N}}\))
코드
DP
설명
만약 대각선 이동이 존재하지 않았다면 BFS 를 수행하면서 다이나믹 프로그램을 수행해도 좋았을 것이다. 하지만 대각선은 십자 이동의 2번이 함축된 것으로, 1칸씩 움직이면서 수행하는 BFS 에서는 점화식을 짜기가 힘들다.
하지만 파이프 옮기기 작업은 항상 인덱스가 커지는 방향으로 이루어진다. (인덱스를 좌->우, 상->하 방향으로 커지도록 둔다면). 이를 이용하면 점화식을 아래처럼 간단히 세울 수 있다.
시간 복잡도
O(\(\mathrm{N} ^ {2}\))
코드
댓글남기기