백준 링크 : https://www.acmicpc.net/problem/30802

문제 개요

아레나 참가자들에게 티셔츠와 펜 묶음을 나눠주기 위해서, 티셔츠 묶음과 펜 묶음그리고 펜 자루를 몇 개씩 주문해야 하는지 출력하는 문제이다. 참고로, 티셔츠는 사이즈별로 구분되어 있다.

예를들어, S사이즈의 인원이 3명, M사이즈의 인원이 9명이 있고, 티셔츠 묶음은 5라고 했을 때, S사이즈는 1번 주문 해야하고, M사이즈는 2번 주문해서, 총 3번의 티셔츠 묶음을 주문한다. 그리고 이를 3으로 출력한다.

펜은 남거나 부족하면 안되므로, 몇 묶음 + 몇 자루 주문할지를 결정해야 한다.

예를 들어, 참가 인원이 11명이고, 펜 묶음이 5, 펜 자루가 1이라면, 펜 묶음을 2번, 펜 자루를 1번 주문해서 이를 2 1로 출력해야 한다.

아이디어


주의사항


코드


// 아래의 코드는 dev c++환경에서 동작됩니다.
// visual studio에서는 bit/stdc++.h가 기본적으로 없기 때문에
// 정삭적인 작동이 되지 않을 수 있습니다.
#include <iostream>

using namespace std;

int n, a[6], t, p, ret;

int main()
{
    ios::sync_with_stdio(NULL); cin.tie(NULL); cout.tie(NULL);
	cin >> n;
	for(int i = 0; i < 6; i++)
	{
		cin >> a[i];
		
	}
	cin >> t >> p;
	
	for(int i = 0; i <  6; i++)
	{
		// 올림처리
		ret += (a[i] + t - 1) / t;
	}
	
	
	cout << ret << "\\n";
	cout << n / p << " " << n % p;

    return 0;
}

후기


원래는 s / t + 1과 같은 방법을 통해서 묶음 문제를 해결했었는데, 저렇게 올림처리를 하면 나누어 떨어졌을 때의 예외처리를 하지 않아도되서, 코드가 많이 간결해져서 참 좋은 방법인 것 같다.