[boj] (s2) 1890 점프

강신현·2022년 4월 21일
0

✅ DP

문제

링크

1. 문제 접근 및 해결 로직

  1. 오른쪽이나 아래쪽으로만 이동할 수 있다.
    -> 오른쪽으로 간 경우, 아래쪽으로 간 경우로 나누어 다음칸을 결정
  2. 이전칸의 점프 횟수가 몇이었는지에 따라 현재칸 기준으로 이전칸이 뭐였는지 알 수 있다.
    -> 점프 횟수를 저장하며 점프 횟수에 따라 다음칸을 결정
  • 정의
    f(i,j)f(i,j) : i,ji,j까지 이동할 수 있는 경로의 개수
  • 구하는 답
    f(N,N)f(N,N)
  • 초기값
    f(1,1)=1f(1,1)=1
  • 점화식
    오른쪽으로 이동 : f(i,j+jump)+=f(i,j)f(i,j+jump)+=f(i,j)
    아래쪽으로 이동 : f(i+jump,j)+=f(i,j)f(i+jump,j)+=f(i,j)
    jump=map[i][j]jump=map[i][j]

2. 코드

3. 시간 복잡도 분석

경우의 수를 모두 구하므로
O(N)O(N)

4. 문제에서 중요한 부분

DP문제는 점화식을 도출하는 것이 중요하다.
Bottm Up(반복문)으로 풀지 Top Down(재귀)으로 풀지는 선택사항

profile
땅콩의 모험 (server)

0개의 댓글

관련 채용 정보