← 실전 문제

순서대로 적재하기

C++완성형

컨베이어에 도착한 물품을 순서대로 상자에 담아요. 상자 하나에 담을 수 있는 무게는 최대 capacity예요. 현재 상자에 다음 물품을 넣을 수 있으면 넣어요. 넣을 수 없으면 현재 상자를 닫고 새 상자에 그 물품을 넣어요. 물품 순서를 바꾸거나 앞서 닫은 상자에 다시 담을 수는 없어요.

int solution(vector<int> weights, int capacity)가 모든 물품을 담는 데 사용한 상자 수를 반환하도록 작성해 주세요. 물품이 없으면 상자를 사용하지 않아요.

매개변수와 반환값

  • weights의 길이 n은 0 이상 500 이하예요.
  • capacity는 1 이상 1,000 이하의 정수예요.
  • 각 물품 무게는 1 이상 capacity 이하의 정수예요.
  • 반환값은 사용한 상자 수로, 0 이상 n 이하예요.

예시

  1. weights = [4, 6, 3, 7, 2], capacity = 10이면 3을 반환해요. 상자별로 [4, 6], [3, 7], [2]를 담아요.
  2. weights = [6, 6, 4], capacity = 10이면 2를 반환해요. 첫 상자에 [6], 둘째 상자에 [6, 4]를 담아요.

실행용 입출력

채점 하네스가 입력을 읽고 solution을 호출해요. 첫 줄에 n capacity, 둘째 줄에 무게 n개를 입력해요. n = 0이면 둘째 줄은 비워 두어요. 하네스는 반환값을 출력하며, 직접 작성할 부분은 solution 함수예요.

예시 입력

5 10
4 6 3 7 2

예상 결과

3

예시 입력

3 10
6 6 4

예상 결과

2
핵심 개념
  • array-1d: 물품의 도착 순서를 유지해요.
  • loops: 현재 상자의 상태를 다음 물품에 이어 사용해요.
  • conditionals: 용량 초과와 정확한 일치를 구분해요.
  • stl-vector: 주어진 벡터의 크기와 인덱스로 데이터를 읽어요.

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

로그인하고 풀기