최대 점수 경로 찾기

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

요약
N x N 격자에서 상하좌우로만 이동하며 셀을 재방문하지 않고 좌상단에서 우하단까지 가는 경로 중 점수 합이 최대인 경로를 찾습니다.
난이도

보통10점 중 6점

유형
백트래킹, DFS, 행렬, 완전 탐색
정답자
아직 제출이 없습니다

문제

N×NN \times N 이차원 배열 AA가 주어진다. 각 원소는 −100-100 이상 100100 이하의 정수다. 이 배열에서 A[1][1]A[1][1]부터 A[N][N]A[N][N]까지 이어지는 경로를 하나 고르는데, 다음 두 제약을 지켜야 한다.

  1. 상하좌우로 인접한 칸으로만 이동한다. 대각선으로는 이동하지 못한다.
  2. 한 번 방문한 칸은 다시 방문하지 못한다.

두 제약을 지키면서 A[N][N]A[N][N]에 도착하면, 그 경로에서 방문한 칸의 값을 모두 더한 값이 그 경로의 점수가 된다. 배열이 주어질 때 경로의 점수가 가장 큰 경우를 구하는 프로그램을 작성하시오.

입력

첫째 줄에 이차원 배열의 크기 NN이 주어진다. (3≤N≤103 \le N \le 10)

다음 NN개 줄에는 각 줄마다 정수 NN개가 빈 칸을 사이에 두고 주어진다. i+1i+1번째 줄의 jj번째 정수가 A[i][j]A[i][j]이며, 모든 값은 −100-100 이상 100100 이하다.

출력

첫째 줄에 경로의 점수 중 최댓값을 출력한다.

예제2

  1. 예제 1

    입력
    3
    12 -10 70
    -20 20 -20
    19 100 7
    
    예상 출력
    179
    
  2. 예제 2

    입력
    3
    100 100 100
    100 100 100
    100 100 100
    
    예상 출력
    900