피너클의 it공부방
백준 1817 짐 챙기는 숌 (c++) : 피너클 본문
728x90
반응형
https://www.acmicpc.net/problem/1817
1817번: 짐 챙기는 숌
첫째 줄에 책의 개수 N과 박스에 넣을 수 있는 최대 무게 M이 주어진다. N은 0보다 크거나 같고 50보다 작거나 같은 정수이고, M은 1,000보다 작거나 같은 자연수이다. N이 0보다 큰 경우 둘째 줄에 책
www.acmicpc.net
간단한 구현문제다.
cin >> n >> m;
if (n == 0) {
cout << "0" << endl;
return 0;
}
n과 m을 입력받은 뒤 n이 0이면 0을 출력하고 바로 프로그램을 종료한다.
for (int i = 0; i < n; i++) cin >> arr[i];
int ans = 0;
int now = 0;
그후 짐의 무게를 입력받고 ans와 now변수를 준비한다.
ans는 정답이고 now는 현재 박스에 넣은 무게다.
for (int i = 0; i < n; i++) {
if (now + arr[i] <= m) now += arr[i];
else {
ans++;
now = arr[i];
}
}
모든 무게를 확인하며 만약 현재 박스에 넣은 무게 + 다음 짐의 무게가 m보다 작다면 now에 arr[i]를 더한다.
만약 m보다 크다면 ans++를 하고 now를 arr[i]로 바꾼다. 새로운 박스에 arr[i]부터 넣는다 생각하면 된다.
if (now != 0) ans++;
cout << ans << endl;
반복문이 끝난뒤 now가 0이 아니면 처리하지않은 박스가 있다는 뜻이니 ans++를 해주고 ans를 출력한다.
#include <iostream>
using namespace std;
int n, m;
int arr[51];
int main()
{
ios_base::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
cin >> n >> m;
if (n == 0) {
cout << "0" << endl;
return 0;
}
for (int i = 0; i < n; i++) cin >> arr[i];
int ans = 0;
int now = 0;
for (int i = 0; i < n; i++) {
if (now + arr[i] <= m) now += arr[i];
else {
ans++;
now = arr[i];
}
}
if (now != 0) ans++;
cout << ans << endl;
}
전체코드다.
728x90
반응형
'백준' 카테고리의 다른 글
백준 2034 반음 (c++) : 피너클 (0) | 2022.07.18 |
---|---|
백준 1417 국회의원 선거 (c++) : 피너클 (0) | 2022.07.17 |
백준 1531 투명 (c++) : 피너클 (0) | 2022.07.14 |
백준 1346 유진수 (c++) : 피너클 (0) | 2022.07.13 |
백준 13422 도둑 (c++) : 피너클 (0) | 2022.07.12 |
Comments