Uknow's Lab.
article thumbnail

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

 

2520번: 팬케이크 사랑

  첫 번째 테스트 케이스에서 주어진 재료를 가지고 바나나 팬케익 10개, 딸기 팬케익 1개, 초콜릿 팬케익 4개, 호두 팬케익 1개를 만들 수 있다.   두 번째 테스트 케이스에서 주어진 재료 중 밀

www.acmicpc.net

 

난이도 : 브론즈 2
태그 : 수학, 구현, 사칙연산

 

 

설명

우유 8컵, 계란 노른자 8개, 설탕 4스푼, 소금 1스푼, 밀가루 9컵이 있으면 팬케이크 반죽 16개를 만들 수 있습니다.

즉, 반죽 1개당 우유 0.5개, 노른자 0.5개, 설탕 0.25스푼, 소금 0.0625스푼, 밀가루 0.5625컵 필요합니다.

 

 

우유, 계란, 설탕, 소금, 밀가루가 각각 16, 16, 8, 2, 17만큼 있을 때

 

16개의 우유가 있고, 반죽 1개당 우유 0.5개가 필요하니,

16개의 우유로 총 16/0.5 = 32개의 반죽을 만들 수 있습니다.

같은 원리로,

노른자 16개 => 16/0.5 = 32,

설탕 8스푼 => 8/0.25 = 32,

소금 2스푼 => 2/0.0625 = 32,

밀가루 9컵 => 17/0.5625 = 30 입니다.

밀가루가 부족해서 반죽을 총 30개 만들 수 있습니다.

 

 

토핑에 필요한 재료는 아래와 같습니다.

바나나, 딸기잼, 초콜릿, 호두가 각각 10, 47, 100, 19 만큼 있을 때,

10 + 1 + 4 + 1 = 16개를 만들 수 있겠네요.

 

 

바나나, 딸기잼, 초콜릿, 호두가 각각 10, 470, 100, 19 만큼 있을 때,

10 + 15 + 4 + 1 = 30개를 만들 수 있겠네요.

 

 

소스코드

#include <stdio.h>

int main() {
    int T;
    scanf("%d", &T);

    // 우유 8개, 노른자 8개, 설탕 4스푼, 소금 1스푼, 밀가루 9컵으로 16개의 팬케이크를 만들 수 있음
    // 즉 반죽 1개당 우유 0.5개, 노른자 0.5개, 설탕 0.25스푼, 소금 0.0625스푼, 밀가루 0.5625컵 필요
    double gram1[] = { 0.5, 0.5, 0.25, 0.0625, 0.5625 };

    // 바나나, 딸기, 초콜릿, 호두
    int gram2[] = { 1, 30, 25, 10 };

    while (T--) {
        scanf("\n"); // 공백이 있어 입력을 하나 받음

        int line1[5];
        int line2[4];

        int max = 1000000000;

        for (int i = 0; i < 5; i++) {
            scanf("%d", &line1[i]);
            int nowMax = line1[i] / gram1[i];
            // 만들 수 있는 가장 많은 반죽 계산
            if (max > nowMax) max = nowMax;
        }

        int cnt = 0;

        for (int i = 0; i < 4; i++) {
            scanf("%d", &line2[i]);
            cnt += (line2[i] / gram2[i]);
        }

        if (max < cnt) {
            printf("%d\n", max);
        }
        else {
            printf("%d\n", cnt);
        }
    }
}

 

주의하실 점은, 토핑이 아무리 많아도

반죽이 없으면 만들 수 없기 때문에,

둘 중 작은 값을 출력하면 됩니다.

profile

Uknow's Lab.

@유노 Uknow

인생은 Byte와 Double 사이 Char다. 아무말이나 해봤습니다.