← 실전 문제

주간 쿠폰 발급

C++디버깅

쿠폰 신청을 접수 순서대로 확인해요. costs[i]는 i번째 신청자에게 쿠폰을 발급하는 비용이에요. 비용이 남은 예산 이하이면 쿠폰을 발급하고 그 비용을 예산에서 빼요. 비용이 남은 예산보다 크면 그 신청자에게 발급하지 않고 다음 신청자를 확인해요. 접수 순서는 바꾸지 않아요.

int solution(vector<int> costs, int budget)가 쿠폰을 받은 신청자의 수를 반환해야 해요. 제공된 코드에서 잘못된 한 줄만 수정해 주세요.

매개변수와 반환값

  • 신청 수 n은 1 이상 500 이하예요.
  • 각 비용은 1 이상 10,000 이하의 정수예요.
  • 초기 예산은 0 이상 1,000,000 이하의 정수예요.
  • 반환값은 발급한 쿠폰 수로, 0 이상 n 이하예요.

예시

  1. costs = [4, 8, 2, 3], budget = 10이면 3을 반환해요. 첫 신청 후 남은 예산은 6이에요. 둘째 신청은 발급하지 않고, 셋째와 넷째 신청에는 발급해요.
  2. costs = [7, 1, 2], budget = 3이면 2를 반환해요. 첫 신청은 발급하지 않지만 이후의 두 신청은 처리할 수 있어요.

실행용 입출력

첫 줄에 n budget, 둘째 줄에 신청 비용 n개를 입력해요. main은 함수 호출용 하네스이며 반환값을 출력해요.

예시 입력

4 10
4 8 2 3

예상 결과

3

예시 입력

3 3
7 1 2

예상 결과

2
핵심 개념
  • array-1d: 접수 순서를 유지하며 신청을 읽어요.
  • loop-control: 이번 신청만 건너뛰는 것과 전체 종료를 구분해요.
  • conditionals: 비용과 현재 남은 예산을 비교해요.
  • stl-vector: 주어진 벡터의 크기와 인덱스로 데이터를 읽어요.

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

로그인하고 풀기