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);
}
}
}
주의하실 점은, 토핑이 아무리 많아도
반죽이 없으면 만들 수 없기 때문에,
둘 중 작은 값을 출력하면 됩니다.
'코딩테스트 > C | C++' 카테고리의 다른 글
[백준 24389번] [C언어] 2의 보수 (0) | 2022.12.02 |
---|---|
[백준 3595번] [C언어] 맥주 냉장고 (1) | 2022.12.02 |
[백준 3447번] [C언어] 버그왕 (0) | 2022.11.29 |
[백준 4158번] [C언어] CD (0) | 2022.11.28 |
[백준 8979번] [C] 올림픽 (0) | 2022.11.15 |