헬퍼가 세는 대상을 분리해요
이전 레슨에서 반환값을 다음 함수로 연결했어요. 이번에는 같은 입력에서 서로 다른 두 결과를 얻고 합쳐요. 수량 7개 중 처음 3개와 나머지를 분리하면 개수는 3과 4예요.
min(quantity,quota)는 기본 구간 개수예요. max(0,quantity-quota)는 추가 구간 개수예요. 수량이 quota보다 적을 때 추가 구간 개수가 음수가 되지 않도록 0과 비교해요.
개수와 단가를 각각 연결해요
int firstCost = firstCount * firstPrice;
int laterCost = laterCount * laterPrice;
처음 3개가 개당 2원, 다음 4개가 개당 5원이면 비용은 6원과 20원이에요. 수량을 나눈 후 해당 구간의 단가를 곱해요.
수량이 2개라면 두 구간의 개수는 얼마일까요? 2와 0이에요. 서로 다른 단가를 써도 각 물건은 어느 구간에서든 정확히 한 번만 계산해야 해요.
직접 풀어봐요
quantity개 중 처음 quota개까지는 개당 basicPrice원이고, 나머지는 개당 extraPrice원이에요. solution(quantity, quota, basicPrice, extraPrice)이 전체 요금을 반환해요. 제공 헬퍼는 그대로 사용할 수 있어요.
quantity는 0100, quota는 120, 두 단가는 0~100이에요. 실행용 입력은 네 매개변수를 같은 순서로 쓴 한 줄, 출력은 반환값이에요. main은 입력과 출력을 맡아요.
예시 1: (7,3,2,5) → 26. 처음 세 개는 6원, 나머지 네 개는 20원이에요.
예시 2: (2,4,3,9) → 6. 기본 구간에 두 개만 있어요.
예시 입력
7 3 2 5
예상 결과
26
예시 입력
2 4 3 9
예상 결과
6
핵심 개념
function-design: 수량을 기본·추가 구간으로 나눠 해당 단가를 적용해요.