
내가 생각했을때 문제에서 원하는부분
첫째 줄에 테스트 케이스의 개수가 주어진다.
각 테스트 케이스는 빈 줄로 구분되며,
두 줄로 이루어져 있다.
테스트케이스의 첫째 줄에는 5개의 정수가 있다.
처음부터 차례대로 cm, y, ssu, ssa, f이다. 은주는 우유 cm컵, 계란 노른자 y개, 설탕 ssu스푼, 소금 ssa스푼, 밀가루 f컵을 가지고 있는 것이다.
두 번째 줄에는 4개의 정수가 있다. 이 수는 b, gs, gc, w이다.
은주는 바나나 b개, 딸기잼 gs그램, 초콜릿 gc그램, 호두 w개가 있다.
주어지는 모든 양은 0보다 크거나 같고,
106보다 작거나 같다.
각 테스트 케이스에 대해 한 줄에 하나의 정수를 출력한다.
이 정수는 은주가 만들 수 있는 팬케이크의 최대 개수이다.
내가 이 문제를 보고 생각해본 부분
이 문제는 팬케이크를 만들기 위해 필요한 재료와 토핑의 양을 기반으로 최대 몇 개의 팬케이크를 만들 수 있는지를 계산해서 출력해주는 문제이다.
입력 처리: 테스트 케이스 수를 읽고, 각 테스트 케이스마다 재료와 토핑의 양을 입력받는다.
재료 비율 정의: 팬케이크 반죽 1개에 필요한 재료의 비율을 설정해준다.
반죽 수 계산: 주어진 재료로 만들 수 있는 반죽의 수를 계산한다.
토핑 수 계산: 각 토핑으로 만들 수 있는 팬케이크 수를 계산한다.
최종 결과 출력: 재료로 만들 수 있는 반죽 수와 토핑으로 만들 수 있는 팬케이크 수를 비교하여 최종적으로 만들 수 있는 팬케이크 수를 출력한다.
코드로 구현
package baekjoon.baekjoon_24;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
// 백준 2520번 문제
public class Main827 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.parseInt(br.readLine()); // 테스트 케이스의 수
// 반죽 1개의 재료 비율 (1개 기준으로 나눈 값)
double MILK = 0.5; // 우유 8컵 (1개 반죽 당)
double YOLK = 0.5; // 계란 노른자 8개 (1개 반죽 당)
double SUGAR = 0.25; // 설탕 4스푼 (1개 반죽 당)
double SALT = 0.0625; // 소금 1스푼 (1개 반죽 당)
double FLOUR = 0.5625; // 밀가루 9컵 (1개 반죽 당)
// 토핑의 필요량
int BANANA = 1; // 바나나 1개
int STRAWBERRY_JAM = 30; // 딸기잼 30그램
int CHOCHOLATE = 25; // 초콜릿 스프레드 25그램
int WALNUT = 10; // 호두 10개
for (int i = 0; i < N; i++) {
br.readLine(); // 빈 줄 처리
StringTokenizer st = new StringTokenizer(br.readLine());
// 각 재료의 양을 반죽 수로 변환
int c = (int) (Integer.parseInt(st.nextToken()) / MILK); // 우유로 만들 수 있는 반죽 수
int y = (int) (Integer.parseInt(st.nextToken()) / YOLK); // 노른자로 만들 수 있는 반죽 수
int su = (int) (Integer.parseInt(st.nextToken()) / SUGAR); // 설탕으로 만들 수 있는 반죽 수
int sa = (int) (Integer.parseInt(st.nextToken()) / SALT); // 소금으로 만들 수 있는 반죽 수
int f = (int) (Integer.parseInt(st.nextToken()) / FLOUR); // 밀가루로 만들 수 있는 반죽 수
// 가능한 반죽 수 중 가장 적은 수를 선택
int cake = Math.min(c, Math.min(y, Math.min(su, Math.min(sa, f))));
st = new StringTokenizer(br.readLine());
// 각 토핑으로 만들 수 있는 팬케이크 수 계산
int b = Integer.parseInt(st.nextToken()) / BANANA; // 바나나 팬케이크 수
int sg = Integer.parseInt(st.nextToken()) / STRAWBERRY_JAM; // 딸기 팬케이크 수
int cg = Integer.parseInt(st.nextToken()) / CHOCHOLATE; // 초콜릿 팬케이크 수
int w = Integer.parseInt(st.nextToken()) / WALNUT; // 호두 팬케이크 수
// 모든 팬케이크 수의 합
int sum = b + sg + cg + w;
// 최종적으로 만들 수 있는 팬케이크 수
int result = Math.min(cake, sum);
System.out.println(result); // 결과 출력
}
br.close();
}
}
코드와 설명이 부족할수 있습니다. 코드를 보시고 문제가 있거나 코드 개선이 필요한 부분이 있다면 댓글로 말해주시면 감사한 마음으로 참고해 코드를 수정 하겠습니다.