계단식 밭 고르기
문제
산비탈에 계단식 밭이 N층으로 일궈져 있다. 맨 위가 1층이고 아래로 내려가며 2층, 3층으로 번호가 붙는다. i층에는 밭이 i개 있으며, 각 층의 밭에는 왼쪽부터 1번, 2번 순서로 번호가 붙는다. 밭마다 올해 거둘 수 있는 수확량이 적혀 있다.
농부는 1층의 밭에서 수확을 시작해 한 층씩 아래로 내려가며 밭을 고른다. 밭 사이의 사다리는 비스듬하게 놓여 있어서, i층의 j번 밭에서는 i+1층의 j번 밭이나 i+1층의 j+1번 밭으로만 내려갈 수 있다. 농부는 N층까지 내려가며 층마다 밭 하나씩을 고르고, 고른 밭의 수확량을 모두 거둔다.
결과적으로 각 밭의 수확량이 주어졌을 때, 농부가 거둘 수 있는 수확량의 합의 최댓값을 구하는 프로그램을 작성하여라.
예를 들어 N=5층이고 각 밭의 수확량이 다음의 표와 같다고 해보자. 빈 칸은 그 층에 밭이 없는 자리다.
| 층 | 1번 | 2번 | 3번 | 4번 | 5번 |
|---|---|---|---|---|---|
| 1층 | 18 | ||||
| 2층 | 23 | 6 | |||
| 3층 | 43 | 18 | 45 | ||
| 4층 | 16 | 64 | 20 | 26 | |
| 5층 | 42 | 39 | 32 | 84 | 77 |
1층 1번 밭에서 출발해 2층 1번, 3층 1번, 4층 2번, 5층 2번 밭을 고르면 거두는 수확량이 다음과 같다.
| 층 | 1층 | 2층 | 3층 | 4층 | 5층 |
|---|---|---|---|---|---|
| 고른 밭 | 1번 | 1번 | 1번 | 2번 | 2번 |
| 수확량 | 18 | 23 | 43 | 64 | 39 |
| 여기까지의 합 | 18 | 41 | 84 | 148 | 187 |
5층에서 수확량이 가장 큰 밭은 84가 적힌 4번 밭이다. 그러나 그 밭까지 내려가는 길에 놓인 밭들의 수확량이 작아서 합은 179에 그친다. 이보다 큰 합을 만드는 길은 없으므로 이 경우 정답은 187이다.
각 밭에 그 밭까지 내려오며 거둘 수 있는 합의 최댓값을 적어 두면, 바로 위 층에서 그 밭으로 내려올 수 있는 두 밭의 값만 보고 채울 수 있다. 맨 아래 층을 다 채운 뒤에 그 층에서 가장 큰 값을 고르면 된다.
입출력 예시
예시 1
입력
5 18 23 6 43 18 45 16 64 20 26 42 39 32 84 77
출력
187
예시 2
입력
3 75 39 21 39 55 27
출력
169
예시 3
입력
1 23
출력
23
입력 조건
가장 먼저 계단식 밭의 층수 N이 자연수로 주어진다. (N은 1 이상 500 이하의 자연수다.)
이어서 N개의 줄에 걸쳐 각 층의 수확량이 1층부터 차례대로 주어진다. i번째 줄에는 i층에 놓인 밭 i개의 수확량이 왼쪽 밭부터 공백으로 구분되어 주어진다. 각 수확량은 0 이상 9,999 이하의 정수다.
출력 조건
농부가 거둘 수 있는 수확량의 합의 최댓값을 한 줄에 출력한다. 수 하나만 출력하므로 줄 끝에 남기는 공백은 없다.
요구사항
- i층의 j번 밭에서는 i+1층의 j번 밭이나 j+1번 밭으로만 내려갈 수 있습니다
- 1층에서 출발해 N층까지 내려가며 층마다 밭을 하나씩 고릅니다
- N이 1이면 밭이 하나뿐이므로 그 밭의 수확량이 답입니다
- 수확량이 0인 밭도 있으므로 매 층에서 큰 쪽만 고르면 답이 틀립니다
- 각 밭까지의 합의 최댓값을 위에서 아래로 채워 두면 한 번만 훑고 답을 얻습니다
- 표준 입력으로 읽고 표준 출력으로 내보내는 프로그램을 짜야 합니다
- 쓸 수 있는 말은 파이썬, 자바스크립트입니다
- 메모리 제한은 256MB입니다. 브라우저에서는 재지 않고 적기만 합니다
- 시간 제한은 출제자의 정답 코드를 같은 런타임에서 재서 정합니다
- 이 문제는 프롬프트가 아니라 코드를 냅니다. 그 코드는 이 기기의 브라우저에서 돌고, 서버로는 나온 출력의 지문과 걸린 시간만 갑니다. 맞았는지는 서버가 정합니다. 실행 시간은 각자 기기가 적어 보내는 값이라, 코드와 기기 정보를 순위표에 같이 내걸어 둡니다.
- 출력이 글자 하나까지 기대값과 같아야 합니다. 줄 안의 빈칸은 다른 글자와 똑같이 봅니다.
- 케이스는 15개이고, 그 가운데 3개는 입력과 기대 출력을 함께 보여 줍니다. 나머지는 제출할 때만 쓰이고 화면에는 보여 주지 않습니다.
- 케이스 15개를 전부 통과해야 해결입니다.
예시
공개 케이스 3개입니다. 채점에는 숨은 케이스가 함께 쓰입니다. 케이스 15개를 전부 통과해야 해결입니다.
1 23
23
3 75 39 21 39 55 27
169
5 18 23 6 43 18 45 16 64 20 26 42 39 32 84 77
187
풀이
코드는 이 기기에서돕니다. 서버로는 나온 출력의 지문과 걸린 시간만 갑니다. 맞았는지는 서버가 정합니다.
제출은 로그인 하셔야 됩니다. 공개 케이스로 돌려보는 것은 로그인 없이도 됩니다.
공개 케이스 3개로 돌려보기가 됩니다. 제출하면 숨은 케이스까지 돕니다.
이 문제를 푼 사람
아직 없습니다. 첫 번째가 되실 수 있습니다.