보드 점프

면접 대비

시간 제한1초메모리 제한128 MB

요약
N×N 격자에서 각 칸의 숫자가 우측 또는 아래로 이동할 정확한 칸 수를 정하는 규칙에서, 좌상단에서 우하단까지 가는 경로 수를 큰 수 연산으로 세는 문제입니다.
난이도

보통10점 중 4점

유형
동적 계획법, 행렬, 수학
정답자
아직 제출이 없습니다

문제

N × N 크기의 게임 보드가 있고, 각 칸에는 0부터 9까지의 숫자가 하나씩 적혀 있다. 말은 왼쪽 위 칸에서 출발하여 오른쪽 아래 칸까지 가는 것이 목표이다.

칸에 적힌 숫자는 그 칸에서 한 번에 이동해야 하는 거리(점프 거리)를 뜻한다. 이동은 오른쪽 또는 아래쪽으로만 할 수 있으며, 반드시 현재 칸에 적힌 숫자만큼 정확히 오른쪽으로 가거나 아래쪽으로 가야 한다. 숫자가 0인 칸은 더 이상 진행할 수 없는 종착점이다.

왼쪽 위 칸에서 출발하여 이 규칙을 지키면서 오른쪽 아래 칸에 도달하는 서로 다른 경로가 몇 가지인지 구하여라.

입력

첫째 줄에 정수 N (4 ≤ N ≤ 100)이 주어진다. 이어지는 N개의 줄에는 각 줄마다 0 이상 9 이하의 숫자 N개가 공백으로 구분되어 주어진다.

출력

왼쪽 위 칸에서 오른쪽 아래 칸까지 규칙에 맞게 이동하는 서로 다른 경로의 개수를 한 줄에 출력한다. 경로의 개수는 263−12^{63}-1보다 클 수 있지만, 100자리를 넘지는 않는다.

힌트

그림 1그림 2

예제3

  1. 예제 1

    입력
    4
    2 3 3 1
    1 2 1 3
    1 2 3 1
    3 1 1 0
    
    예상 출력
    3
    
  2. 예제 2

    입력
    4
    1 1 1 1
    1 1 1 1
    1 1 1 1
    1 1 1 0
    
    예상 출력
    20
    
  3. 예제 3

    입력
    4
    0 1 1 1
    1 1 1 1
    1 1 1 1
    1 1 1 0
    
    예상 출력
    0