전공/알고리즘
백준 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";
}