벌통 열기
문제
어느 양봉장에는 벌통이 길을 따라 일렬로 N개 놓여 있다. 벌통에는 길의 앞쪽부터 1번부터 N번까지 번호가 붙어 있고, 각 벌통에서 얻을 수 있는 꿀의 양이 적혀 있다.
양봉가는 벌통을 골라 열고 그 안의 꿀을 얻는다. 다만 나란히 붙은 벌통을 세 개 연달아 열면 벌이 한꺼번에 놀라 달아나므로, 번호가 이어지는 세 벌통을 모두 열 수는 없다. 그 밖의 제약은 없으므로 벌통을 하나도 열지 않아도 되고, 중간중간 띄워 가며 얼마든지 열어도 된다.
결과적으로 각 벌통에서 얻을 수 있는 꿀의 양이 주어졌을 때, 양봉가가 얻을 수 있는 꿀의 양의 최댓값을 구하는 프로그램을 작성하여라.
예를 들어 N=6개의 벌통에서 얻을 수 있는 꿀의 양이 다음의 표와 같다고 해보자.
| 벌통 | 1 | 2 | 3 | 4 | 5 | 6 |
|---|---|---|---|---|---|---|
| 꿀의 양 | 6 | 10 | 13 | 9 | 8 | 1 |
꿀의 양이 큰 2번, 3번, 4번, 5번 벌통을 모두 열면 40을 얻을 것 같지만, 2번부터 4번까지가 이미 번호가 이어지는 세 벌통이므로 그렇게 열 수는 없다. 대신 1번과 2번 벌통을 열고 3번 벌통을 건너뛴 뒤에 4번과 5번 벌통을 열면 된다.
| 벌통 | 1 | 2 | 3 | 4 | 5 | 6 |
|---|---|---|---|---|---|---|
| 열었는가 | 열기 | 열기 | 그냥 둠 | 열기 | 열기 | 그냥 둠 |
| 얻은 꿀 | 6 | 10 | 0 | 9 | 8 | 0 |
얻은 꿀의 양은 6+10+9+8로 33이다. 여기에서 6번 벌통까지 열면 4번, 5번, 6번이 연달아 세 개가 되므로 열 수 없다. 이보다 많이 얻는 방법은 없으므로 이 경우 정답은 33이다.
벌통을 어디까지 열었는지만 알면 그 앞쪽의 선택과 뒤쪽의 선택이 서로 얽히지 않는다. 마지막 벌통을 열지 않는 경우, 마지막 벌통만 열고 그 앞을 쉬는 경우, 마지막 두 벌통을 열고 그 앞을 쉬는 경우로 나눠 보면 앞쪽에서 이미 구해 둔 최댓값을 그대로 쓸 수 있다.
입출력 예시
예시 1
입력
6 6 10 13 9 8 1
출력
33
예시 2
입력
3 228 941 972
출력
1913
예시 3
입력
1 548
출력
548
입력 조건
가장 먼저 벌통의 수 N이 자연수로 주어진다. (N은 10,000보다 작거나 같은 자연수다.)
이어서 N개의 줄에 걸쳐 1번 벌통부터 N번 벌통까지 얻을 수 있는 꿀의 양이 한 줄에 하나씩 차례대로 주어진다. 각 값은 0 이상 1,000 이하의 정수다. 꿀을 하나도 얻을 수 없는 벌통이 있어 값이 0으로 주어지기도 한다.
출력 조건
양봉가가 얻을 수 있는 꿀의 양의 최댓값을 한 줄에 출력한다. 수 하나만 출력하므로 줄 끝에 남기는 공백은 없다.
요구사항
- 번호가 이어지는 세 벌통을 모두 열 수는 없습니다
- 두 벌통까지는 연달아 열어도 되고, 띄워 가며 열어도 됩니다
- 벌통의 수가 두 개 이하라면 모두 열어도 제약에 걸리지 않습니다
- 꿀의 양이 0인 벌통도 있으므로 값이 크다고 무조건 여는 방식으로는 답이 나오지 않습니다
- 앞쪽에서 구해 둔 최댓값을 다시 쓰면 벌통을 한 번씩만 훑어도 됩니다
- 표준 입력으로 읽고 표준 출력으로 내보내는 프로그램을 짜야 합니다
- 쓸 수 있는 말은 파이썬, 자바스크립트입니다
- 메모리 제한은 256MB입니다. 브라우저에서는 재지 않고 적기만 합니다
- 시간 제한은 출제자의 정답 코드를 같은 런타임에서 재서 정합니다
- 이 문제는 프롬프트가 아니라 코드를 냅니다. 그 코드는 이 기기의 브라우저에서 돌고, 서버로는 나온 출력의 지문과 걸린 시간만 갑니다. 맞았는지는 서버가 정합니다. 실행 시간은 각자 기기가 적어 보내는 값이라, 코드와 기기 정보를 순위표에 같이 내걸어 둡니다.
- 출력이 글자 하나까지 기대값과 같아야 합니다. 줄 안의 빈칸은 다른 글자와 똑같이 봅니다.
- 케이스는 15개이고, 그 가운데 3개는 입력과 기대 출력을 함께 보여 줍니다. 나머지는 제출할 때만 쓰이고 화면에는 보여 주지 않습니다.
- 케이스 15개를 전부 통과해야 해결입니다.
예시
공개 케이스 3개입니다. 채점에는 숨은 케이스가 함께 쓰입니다. 케이스 15개를 전부 통과해야 해결입니다.
1 548
548
3 228 941 972
1913
6 6 10 13 9 8 1
33
풀이
코드는 이 기기에서돕니다. 서버로는 나온 출력의 지문과 걸린 시간만 갑니다. 맞았는지는 서버가 정합니다.
제출은 로그인 하셔야 됩니다. 공개 케이스로 돌려보는 것은 로그인 없이도 됩니다.
공개 케이스 3개로 돌려보기가 됩니다. 제출하면 숨은 케이스까지 돕니다.
이 문제를 푼 사람
아직 없습니다. 첫 번째가 되실 수 있습니다.