[백준/BOJ] 백준 13300번 : 방 배정

2020. 8. 8. 02:32알고리즘 문제풀이

https://www.acmicpc.net/problem/13300

 

13300번: 방 배정

표준 입력으로 다음 정보가 주어진다. 첫 번째 줄에는 수학여행에 참가하는 학생 수를 나타내는 정수 N(1 ≤ N ≤ 1,000)과 한 방에 배정할 수 있는 최대 인원 수 K(1 < K ≤ 1,000)가 공백으로 분리되어

www.acmicpc.net

여학생의 학년별 인원과 남학생의 학년별 인원을 세고, 학년별로 여학생이 필요한 방의 개수와 남학생이 필요한 방의 개수를 구해서 전체 방 배정을 위한 최소한의 방의 개수를 구한다

 

코드

#include <iostream>
#include <cstring>
using namespace std;

int main()
{
	cin.tie(NULL);
	ios_base::sync_with_stdio(false);

	int n, k;
	int s, y;
	int girl[6];
	int boy[6];
	int cnt = 0;

	memset(girl, 0, sizeof(girl));
	memset(boy, 0, sizeof(boy));

	cin >> n >> k;

	for (int i = 0; i < n; i++)
	{
		cin >> s >> y;

		//여학생의 학년별 인원을 센다
		if (s == 0)
		{
			girl[y - 1]++;
		}

		//남학생의 학년별 인원을 센다
		else if (s == 1)
		{
			boy[y - 1]++;
		}
	}

	//학년별로 여학생이 필요한 방의 개수와 남학생이 필요한 방의 개수를 구한뒤 
	//전체 방 배정을 위한 최소한의 방의 개수를 구한다
	for (int i = 0; i < 6; i++)
	{
		if (girl[i] > 0)
		{
			if (girl[i] % k == 0)
				cnt += girl[i] / k;
			else
				cnt += girl[i] / k + 1;
		}

		if (boy[i] > 0)
		{
			if (boy[i] % k == 0)
				cnt += boy[i] / k;
			else
				cnt += boy[i] / k + 1;
		}
	}

	cout << cnt;

	return 0;
}