반환값을 다음 계산의 입력으로 써요
앞 레슨에서는 함수 한 개의 매개변수와 반환값을 읽었어요. 이번에는 함수의 결과를 다른 함수에 전달해요. <algorithm>의 min(a,b)는 작은 값, max(a,b)는 큰 값을 반환해요.
int twice(int value) { return value * 2; }
int addThree(int value) { return value + 3; }
int result = addThree(twice(4));
안쪽 twice(4)가 8을 반환한 뒤 addThree(8)이 11을 반환해요. 안쪽 함수부터 결과를 구하는 순서예요.
계산 순서가 계약을 바꿔요
값 8을 두 배 한 뒤 3을 더하면 19예요. 3을 먼저 더하고 두 배 하면 22예요. 함수 이름이 비슷해도 인자와 순서를 바꾸면 다른 계산이 돼요.
과제에는 ‘할인한 금액’과 ‘상한을 적용한 금액’ 두 역할의 헬퍼가 제공돼요. 변수 reduced에는 어느 단계까지 끝난 결과가 들어가야 할까요? 할인을 적용하고 0보다 작지 않게 만든 금액이에요. 이 값을 다음 헬퍼로 넘겨요.
직접 풀어봐요
amount원에서 discount원을 뺀 뒤, 음수가 되면 0원으로 처리해요. 그 결과가 cap원을 넘으면 cap원만 받는 규칙이에요. solution(amount, discount, cap)이 최종 금액을 반환하도록 두 빈칸을 채워요.
세 매개변수는 모두 0~1000이에요. 실행용 입력은 amount discount cap, 출력은 반환값 하나예요. main은 실행용이에요. 제공 헬퍼의 역할을 읽고 계산 순서를 연결해요.
예시 1: (90,20,50) → 50. 할인 후 70원에 상한 50원을 적용해요.
예시 2: (40,10,100) → 30. 할인 후 30원이 상한보다 작아요.
예시 입력
90 20 50
예상 결과
50
예시 입력
40 10 100
예상 결과
30
핵심 개념
function-design: 헬퍼의 반환값을 다음 함수의 인자로 연결해요.