슈퍼 배관공
시간 제한1초메모리 제한128 MB
그리드의 왼쪽 아래에서 오른쪽 아래까지 이동하며 코인을 최대로 모으는 경로를 구한다. 오른쪽, 위, 아래로만 움직일 수 있고 이미 지난 칸은 다시 밟을 수 없다.
문제
슈퍼 배관공(SP)이 장애물 코스를 헤쳐 나가며 상품을 모으고, 오른쪽 아래에 있는 공주(TP)를 구출하는 비디오 게임을 위한 프로그램을 작성한다.
장애물 코스는 격자다. SP는 왼쪽 아래 칸에서 출발해 오른쪽 아래 칸에 있는 공주에게 도달해야 한다. 일부 칸에는 SP가 통과할 수 없는 장애물이 있고, 다른 칸에는 $1.00부터 $9.00까지의 값을 가진 금화가 놓여 있다.
이 게임은 전통적인 횡스크롤 게임이므로 SP는 오른쪽, 위, 아래로만, 한 번에 한 칸씩, 장애물이 없는 인접한 칸으로만 이동할 수 있다. 이미 지나온 칸에는 다시 들어갈 수 없다. 즉, 위로 이동한 뒤에는 다음에 오른쪽으로 이동하기 전까지 아래로 내려갈 수 없고, 아래로 이동한 뒤에는 다음에 오른쪽으로 이동하기 전까지 위로 올라갈 수 없다. SP는 지나는 모든 칸의 금화를 획득한다. 왼쪽 아래 칸에서 오른쪽 아래 칸까지 가는 경로에서 SP가 모을 수 있는 금화 값의 합의 최댓값을 구하라.
입력
입력은 여러 개의 테스트 케이스로 이루어진다. 각 테스트 케이스의 첫 줄에는 두 정수 과 이 주어진다 (). 이어서 개의 문자로 이루어진 개의 줄로 격자가 주어진다.
*는 장애물을,- 숫자
1~9는 그 값을 가진 금화를, .은 빈 칸을 나타낸다.
SP가 공주에게 도달하는 것은 항상 가능하다. 마지막 테스트 케이스 뒤에는 0 0으로 이루어진 줄이 오며, 이 줄은 처리하지 않는다.
출력
각 테스트 케이스마다 한 줄에, 왼쪽 아래 칸에서 오른쪽 아래 칸까지 가는 올바른 경로에서 SP가 모을 수 있는 금화 값의 합의 최댓값을 출력한다. 모든 금화는 정수 달러 값이므로 답은 정수이며, 달러 기호나 소수 부분 없이 정수로 출력한다.