← 실전 문제

간격을 두고 선택하는 점수

C++디버깅

점수가 적힌 항목을 왼쪽부터 나열했어요. 원하는 항목을 골라 점수를 더하되, 서로 바로 이웃한 두 항목을 동시에 고를 수는 없어요. 아무것도 고르지 않아도 돼요.

int solution(vector<int> scores)가 가능한 점수 합의 최댓값을 반환하도록 잘못된 한 줄을 고쳐 주세요.

매개변수와 반환값

항목 수는 0200이고, 각 점수는 01,000,000인 정수예요. 점수는 중복될 수 있어요. 빈 배열의 답은 0이에요. 최댓값을 만드는 선택이 여러 개여도 합 하나만 반환해요. 반환형은 int이고 답은 0~100,000,000이에요.

예시

  1. [5,1,6,4] → 11: 1번째와 3번째의 5와 6을 선택해요. 이웃한 6과 4는 함께 고를 수 없어요.
  2. [2,8,2] → 8: 가운데 8 하나가 양끝 2+2보다 커요.

자동 채점 입력·출력

첫 줄은 항목 수 N, 다음 줄은 N개의 점수예요. N=0이면 점수 줄은 없어도 돼요. 최대 합을 한 줄에 출력해요. main은 채점용이며 수정 대상은 solution의 한 줄이에요.

예시 입력

4
5 1 6 4

예상 결과

11

예시 입력

3
2 8 2

예상 결과

8
핵심 개념
  • dp-1d: 현재 항목을 선택하는 경우와 건너뛰는 경우를 나눠요.
  • array-1d: 문제의 항목 번호와 DP의 접두 길이를 구분해요.

코드 작성과 채점은 로그인 후 이용해요

로그인하고 풀기