전공/알고리즘

백준 1817(짐 챙기는 숌)

xkdlaldfjtnl 2020. 7. 31. 14:37

https://www.acmicpc.net/problem/1817

 

1817번: 짐 챙기는 숌

첫째 줄에 책의 개수 N과 박스에 넣을 수 있는 최대 무게 M이 주어진다. N은 0보다 크거나 같고 100,000보다 작거나 같은 정수 이고, M은 100,000보다 작거나 같은 자연수이다. 둘째 줄에 책의 무게가 ��

www.acmicpc.net

 

책이 쌓여있는데, 순서대로 밖에 책을 상자에 넣을 수 없으므로, 입력 순서와 반대로 책을 상자에 집어 넣는다.

 

만약에 용량을 초과하면 새로운 상자에 넣는다. 

 

근데 여기서 넣을 책이 없는 경우도 있으므로 이 경우를 주의하자. 문제의 조건을 잘 확인하자

 

#include<iostream>
using namespace std;
#define MAX 100001

int N, M, cnt=1, sum;
int book[MAX];

int main() {
	cin >> N >> M;
	if (N == 0) {
		cout << 0 << "\n";
		return 0;
	}
	for (int i = 0; i < N; i++) {
		cin >> book[i];
	}
	for (int i = N - 1; i >= 0; i--) {
		sum += book[i];
		if (sum > M) {
			cnt++;
			sum = book[i];
		}
	}
	cout << cnt << "\n";
}