문제링크 : 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일때를 주의해야한다.
'백준 > 실버' 카테고리의 다른 글
[백준 1991번] 트리 순회 (C++) (0) | 2023.04.21 |
---|---|
[백준 9465번] 스티커 (C++) (0) | 2023.04.18 |
[백준 10610번] 30 (C++) (0) | 2023.04.11 |
[백준 10025번] 게으른 백곰 (C++) (0) | 2023.04.08 |
[백준 21736번] 헌내기는 친구가 필요해 (C++) (0) | 2023.04.07 |