티스토리 뷰

하와와 대학생쨩 하와이로 가는 거시와요~
(http://boj.kr/16456)


언뜻 보면 주어진 3가지 동작으로 바로 탐색을 할 수 있을 것 같지만, 한 칸 전으로 돌아가는 동작때문에 처리하기가 힘들다.
이 전으로 돌아가는 동작만 잘 처리하면 dp식을 찾을 수 있다.

일단 한 칸 전으로 돌아가려면 돌아갈 칸은 방문한 적이 없어야 하기 때문에 무조건 2칸 이동한 후에 1칸 돌아오는 이동이 묶일 수 밖에 없다.
마찬가지로 한 칸 전으로 돌아갔으면 현재 칸, 다음 칸은 이미 방문했기 때문에 2칸을 이동할 수 밖에 없다.
즉, (+2) -> (-1) -> (+2) 는 하나의 이동이라고 볼 수 있다.

그러면 이제 식을 세우는 일은 간단하다.
Dii번째 섬까지 모두 방문하는 경우의 수라고 한다.
기본적으로 D1=D2=D3=1이고,
한 칸 전에서 (+1)로 오는 경우와 3칸 전에서 (+2) -> (-1) -> (+2)로 오는 경우 두 가지가 있으니,
Di=Di1+Di3(i4)이다.

하지만 답이 Dn이 아니라는 점을 주의해야 한다.
위 방법으로 구한 답은 i번째 섬을 방문하기 전에 i1개의 섬들을 모두 방문한 경우다.
하지만 마지막에 n번째 섬을 방문한 후 n1번째 섬을 방문하는 경우도 있으니,
답은 i2일땐 1, i3일땐 Dn+Dn2이다.


'문제' 카테고리의 다른 글

BOJ 10717 성벽  (0) 2018.11.30
BOJ 16565 N포커  (0) 2018.11.27
Codeforces 1077F1, 1077F2 Pictures with Kittens (easy, hard version)  (0) 2018.11.20
BOJ 2867 수열의 값  (0) 2018.11.11
Codeforces 1070C Cloud Computing  (0) 2018.11.11
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/04   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
글 보관함