[백준] 1890 점프

cheeeese·2022년 7월 20일
0

코딩테스트 연습

목록 보기
118/151
post-thumbnail

📖 문제

https://www.acmicpc.net/problem/1890

💻 내 코드

n=int(input())

mlist=[list(map(int, input().split())) for _ in range(n)]

dp=[[0]*n for _ in range(n)]



dp[0][0]=1

for i in range(n):
    for j in range(n):
        if i==n-1 and j==n-1:
            break
        else:
            if i+mlist[i][j]<n:
                dp[i+mlist[i][j]][j]+=dp[i][j]
            if j+mlist[i][j]<n:
                dp[i][j+mlist[i][j]]+=dp[i][j]


print(dp[n-1][n-1])

💡풀이

  • dp[0][0]=1로 설정
  • 현재 위치를 mlist[i][j]라 했을 때
  • (i+현재 위치에 써있는 수)가 n보다 작아 게임판 내에 있다면
  • 움직인 위치의 인덱스의 dp리스트의 수에 직전에 있던 곳의 인덱스의 dp리스트의 수를 더해준다
  • j도 마찬가지

0개의 댓글