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

[코드업(codeup)/C]코드업(codeup) 4877 : 방 배정하기 C언어

by starfish22 2022. 2. 22.
728x90

▶문제 : 방 배정하기 (codeup.kr)

 

방 배정하기

방의 정원을 나타내는 서로 다른 세 자연수 $A, B, C$ ($1 ≤ A < B < C ≤ 50$) 와 전체 학생 수를 나타내는 자연수 $N$ ($1 ≤ N ≤ 300$)이 공백으로 분리되어 한 줄에 주어진다.

codeup.kr

 

▶코드 작성

#include <stdio.h>

int main()
{
    int room[3], n, tmp;

    scanf("%d %d %d %d", &room[0], &room[1], &room[2], &n);

    for (int i = 0; i * room[0] <= n; i++)//room[0]방이 들어갈 만큼 반복
    {
        for (int j = 0; i * room[0] + j * room[1] <= n; j++)
        {//room[0]방과 room[1]방이 들어갈 만큼 반복
            tmp = n - i * room[0] - j * room[1];//n에서 room[0], room[1]방에 들어간 수를 뺌
            if (tmp % room[2] == 0)//room[2]방에 들어가서 딱 떨어지면 1출력
            {
                printf("1");
                return 1;
            }
        }
    }
    printf("0");
    return 0;
}

 

▶해석

첫 번째 반복문은 room [0] 방이 필요한 최대 개수만큼 반복하고, 두 번째 반복문은 room [0] 방의 개수와 room [1] 방의 최대 개수만큼 반복하였다.

tmp변수에 n에서 room[0]방 개수와 room [1] 방 개수를 뺀 값을 저장하고, tmp을 room [2]로 나눈 나머지가 0이면 3종류의 방으로 인원수에 맞추어 배정할 수 있다는 것이므로 1을 출력하여 종료하고 반복문이 끝나도 없으면 0을 출력하여 종료한다.

728x90

댓글