article thumbnail image
Published 2023. 1. 9. 19:47

문제 설명

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

 

13300번: 방 배정

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

www.acmicpc.net

n명의 학생들이 수학여행을 가는데 한 방에 최대 k명의 학생을 배정할 수 있다

방은 같은 성별, 학년별로만 이루어져야 할 때 필요한 방의 수를 구하기

 

문제 풀이법

우선 2차원 배열에 총 몇 명의 학생이 수학여행을 가는지 구한다

이중 for문을 돌면서 해당 학년, 성별의 학생들의 방이 몇개인지 더한다

  • 0명 일 때
    • 아무것도 하지 않는다
  • 학생 수 <= 최대 방 인원
    • + 1
  • 학생 수 > 최대 방 인원
    • 학생 수 % 최대 방 인원 == 0
      • (학생 수 / 최대 방 인원 수)
    • 학생 수 % 최대 방 인원 != 0
      • (학생 수 / 최대 방 인원 수) + 1

 

 

소스 코드

#include <iostream>
using namespace std;

int main()
{
    int n, k;
    int arr[2][6] = { 0 };
    
    cin >> n >> k;
    
    int a, b;
    for (int i = 0; i < n; i++)
    {
        cin >> a >> b;
        arr[a][b - 1]++;
    }
    
    int cnt = 0;
    
    for (int i = 0; i < 2; i++)
    {
        for (int j = 0; j < 6; j++)
        {
            if (arr[i][j] > 0)
            {
                if (arr[i][j] <= k)
                    cnt++;
                else
                {
                    if (arr[i][j] % k == 0)
                        cnt += arr[i][j] / k;
                    else
                        cnt += arr[i][j] / k + 1;
                }
            }
        }
    }
    
    printf("%d\n", cnt);
    
    return 0;
}

'Algorithm Study' 카테고리의 다른 글

[백준] 1919 애너그램 만들기  (0) 2023.01.09
[백준] 11328 Strfry  (0) 2023.01.09
[백준] 10807 개수 세기  (0) 2023.01.09
[백준] 3273 두 수의 합  (0) 2023.01.06
[백준] 2566 최댓값  (0) 2023.01.06
복사했습니다!