백준/실버
[백준 1817번] 짐 챙기는 숍 (C++)
게임개발기원
2023. 4. 16. 15:48
문제링크 : https://www.acmicpc.net/problem/1817
1817번: 짐 챙기는 숌
첫째 줄에 책의 개수 N과 박스에 넣을 수 있는 최대 무게 M이 주어진다. N은 0보다 크거나 같고 50보다 작거나 같은 정수이고, M은 1,000보다 작거나 같은 자연수이다. N이 0보다 큰 경우 둘째 줄에 책
www.acmicpc.net
#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define MAX 987654321
#define pii pair <int, int>
int main()
{
ios_base::sync_with_stdio(false);
cin.tie(NULL);
int N, M;
cin >> N >> M;
int tmp = M;
int weight, cnt = 1;
for(int i=0; i<N; i++)
{
cin >> weight;
if(tmp - weight < 0) //새박스가 필요해지면
{
cnt++;
tmp = M; //새박스 할당
}
tmp-=weight;
}
cout << ((N==0) ? 0 : cnt); //N이 0인 경우 예외처리
return 0;
}
단순한 그리디 알고리즘 문제이다.
N이 0일때를 주의해야한다.