종류에 따라 이용권의 차감량이 달라요. 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예요.
예시
[[0,3,1,4],[1,5,3,7]]→27: 첫 이용권은 12를 차감해요. 둘째는 3번·3번·1번의 세 묶음으로 나뉘어 15를 차감해요.[[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: 함수의 계약에 맞춰 두 계산 결과를 합쳐요.