← 실전 문제

이용권마다 다른 차감량

C++빈칸 채우기

종류에 따라 이용권의 차감량이 달라요. solution(vector<vector<int>> passes)는 모든 이용권에서 차감한 양의 합을 반환해요. 각 행은 [종류, 단위 차감량, 묶음 크기, 이용 횟수]예요.

  • 종류 0: 한 번 이용할 때마다 단위 차감량을 차감해요. 묶음 크기는 항상 1이에요.
  • 종류 1: 묶음 크기만큼의 이용을 한 묶음으로 계산해요. 일부만 이용한 마지막 묶음도 한 묶음으로 계산해요. 한 묶음당 단위 차감량을 차감해요.
  • 이용 횟수가 0이면 어떤 종류든 차감량이 0이에요.

Pass의 unit은 종류 0에서는 한 번의 차감량, 종류 1에서는 한 묶음의 차감량이에요. 두 파생 클래스의 빈칸을 채워 주세요.

매개변수와 반환값

passes의 행 수는 0100, 각 행 길이는 4예요. 종류는 0 또는 1, 단위 차감량은 01,000, 묶음 크기는 1100, 이용 횟수는 01,000이에요. 같은 행이 반복될 수 있어요. 빈 배열이면 0을 반환해요. 반환형은 int예요.

예시

  1. [[0,3,1,4],[1,5,3,7]] → 27: 첫 이용권은 12를 차감해요. 둘째는 3번·3번·1번의 세 묶음으로 나뉘어 15를 차감해요.
  2. [[1,8,4,4],[0,9,1,0]] → 8: 첫 이용권은 정확히 한 묶음이고, 둘째는 이용하지 않았어요.

자동 채점 입력·출력

첫 줄은 행 수 N, 다음 N줄은 종류·단위 차감량·묶음 크기·이용 횟수예요. 합계를 한 줄에 출력해요. main은 매개변수를 구성하는 채점용 코드이며 작성 대상은 두 빈칸이에요.

예시 입력

2
0 3 1 4
1 5 3 7

예상 결과

27

예시 입력

2
1 8 4 4
0 9 1 0

예상 결과

8
핵심 개념
  • oop-class: 보호 멤버의 의미와 생성자 초기화를 읽어요.
  • oop-inheritance-poly: 같은 함수 인터페이스에 서로 다른 계산 규칙을 구현해요.
  • function-design: 함수의 계약에 맞춰 두 계산 결과를 합쳐요.

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

로그인하고 풀기