로그인가입

계단식 밭 고르기

200점케이스 15출제 dongbinna
10월 30일에 올라온 문제입니다.

문제

산비탈에 계단식 밭이 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층236
3층431845
4층16642026
5층4239328477

1층 1번 밭에서 출발해 2층 1번, 3층 1번, 4층 2번, 5층 2번 밭을 고르면 거두는 수확량이 다음과 같다.

층1층2층3층4층5층
고른 밭1번1번1번2번2번
수확량1823436439
여기까지의 합184184148187

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

풀이

코드는 이 기기에서돕니다. 서버로는 나온 출력의 지문과 걸린 시간만 갑니다. 맞았는지는 서버가 정합니다.

0자1줄메모리 256MB (적어만 둡니다)기준 18ms

제출은 로그인 하셔야 됩니다. 공개 케이스로 돌려보는 것은 로그인 없이도 됩니다.

공개 케이스 3개로 돌려보기가 됩니다. 제출하면 숨은 케이스까지 돕니다.

이 문제를 푼 사람

아직 없습니다. 첫 번째가 되실 수 있습니다.