본문 바로가기
코드업(codeup)/C

[코드업(codeup)/C]코드업(codeup) 4866 : 방 배정 (중등) C언어

by starfish22 2022. 2. 22.
728x90

▶문제 : 방 배정 (중등) (codeup.kr)

 

방 배정 (중등)

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

codeup.kr

 

▶코드 작성

#include <stdio.h>

int main()
{
    int n, k, cnt;
    int num = 0, arr[2][2] = {0};

    scanf("%d %d", &n, &k);
    for (int i = 0, m, g; i < n; i++) {
        scanf("%d %d", &m, &g);
        if (g == 1 || g == 2) num++;//1~2학년일 때
        else if (g == 3 || g == 4) arr[m][0]++;//3~4학년일 때
        else arr[m][1]++;//5~6학년일 때
    }

    cnt = num / k;//1~2학년 k명을 꽉 채운 방 개수
    if (num % k > 0) cnt++;//k명을 못 채운 방 +1

    for (int i = 0; i < 2; i++)
    {
        for (int j = 0; j < 2; j++)
        {
            if (arr[i][j] > 0)//인원이 1명이라도 있을 때
            {
                cnt += arr[i][j] / k;//k명을 꽉 채운 방
                if (arr[i][j] % k > 0) cnt++;//k명을 못 채운 방 +1
            }
        }
    }

    printf("%d", cnt);

    return 0;
}

 

▶해석

성별과 학년을 입력받을 때 1~2학년 따로, 3~4학년 따로, 5~6학년 따로 입력받았다.

k명을 꽉 채운 방 개수를 구하기 위해 arr [i][j]/k를 계산하였고, k명을 못 채운 방을 구하기 위해 arr [i][j]% k가 0보다 큰지 확인하여 +1 하였다.

728x90

댓글