← 학습 코스

늘어나는 비용으로 가능한 날짜

C++완성형

다음 행동 전에 가능한지 검사해요

구간을 정해 반복하던 앞 레슨과 달리, 이번에는 남은 양에 따라 종료해요. 재료 9개에서 한 번에 4개씩 사용하면 9→5→1로 변하고 성공한 사용 횟수는 두 번이에요. 남은 1로 세 번째 사용을 시작할 수 없어요.

while (조건)은 조건이 참인 동안 본문을 실행해요. 사용하기 전에 ‘남은 양이 이번 비용 이상인가’를 검사하면 부족한 날을 성공 횟수에 넣지 않아요.

바뀌는 값들을 서로 다른 이름으로 유지해요

첫 비용이 2, 다음부터 매번 3씩 증가한다고 해요. 초기 재료가 12일 때 상태는 아래와 같아요.

사용 전 재료 이번 비용 성공 후 재료
12 2 10
10 5 5
5 8 사용 못 함

성공 횟수는 2예요. 다음 비용이 늘어나는 시점과 횟수가 늘어나는 시점을 구분해요. &&는 두 조건이 모두 참일 때 참이므로 최대 날짜 제한도 함께 검사할 수 있어요. x -= y는 x=x-y, x += y는 x=x+y의 짧은 표현이에요.

직접 풀어봐요

재료 supply개가 있어요. 첫날에는 firstCost개, 다음날부터는 전날보다 increase개 더 사용해요. 그날 필요한 양을 모두 사용한 날만 성공으로 세고, 재료가 부족하면 즉시 끝내요. 최대 limit일까지만 시도해요. solution이 성공한 날짜 수를 반환해요.

supply는 010000, firstCost는 1100, increase는 0100, limit은 0100이에요. 실행용 입력은 네 매개변수를 순서대로 적은 한 줄, 출력은 반환값이에요. 하네스가 입력·출력을 맡아요.

예시 1: (20,3,2,10) → 3. 비용 3·5·7을 쓰고 5가 남아 다음 9는 못 써요. 예시 2: (12,4,0,2) → 2. 재료는 더 남지만 날짜 제한 두 번에서 끝나요.

예시 입력

20 3 2 10

예상 결과

3

예시 입력

12 4 0 2

예상 결과

2
핵심 개념
  • loops: 남은 양·다음 비용·성공 횟수를 각각 유지해요.

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

로그인하고 풀기