이중배열로 문제를 해결할 수 있다.
최대 인원수보다 작거나 같은 경우에는 모두 한방에 들어갈 수 있다.
최대 인원수보다 큰 경우에는 같은 성별 같은 나이의 학생수를 최대 인원수로 나눈 나머지가
0인 경우에는 이를 나눈 나머지값만 방 개수에 더하면 되고
0이 아닌 경우에는 이를 나눈 나머지값에 1을 더해서 방 개수에 더하면 된다.
#include <bits/stdc++.h>
int arr[2][6];
int main()
{
int n, m, A, B, cnt = 0, tmp;
scanf("%d %d", &n, &m);
for (int i = 0; i < n; i++)
{
scanf("%d %d", &A, &B);
arr[A][B-1]++;
}
for (int i = 0; i < 2; i++)
{
for (int j = 0; j < 6; j++)
{
if (arr[i][j] > 0 && arr[i][j] <= m)
cnt++;
if (arr[i][j] > m)
{
if (arr[i][j] % m == 0)
cnt += arr[i][j] / m;
else
cnt += arr[i][j] / m + 1;
}
}
}
printf("%d\n", cnt);
}
이번에도 단순 보여진 케이스만 해결했다고 정답이 되는게 아니라 조금 더 섬세하게 문제에 대해 접근해야겠다고 생각하였다.