class Solution:

    def numRollsToTarget(self, n: int, k: int, target: int) -> int:

        dp = [[0 for _ in range(1001)] for _ in range(n+1)]

        for kk in range(1, k+1):

            dp[1][kk] = 1

        for nn in range(1, n):

            for tt in range(1, nn * k + 1):

                for kk in range(1, k+1):

                    dp[nn+1][tt+kk] = (dp[nn+1][tt+kk] + dp[nn][tt]) % 1000000007

        for i in range(1, n+1):

            print(*dp[i][:target+1])

        return dp[n][target]


뭐지 숫자가 커지는데? 했더니 DP였다.