백준 팬케이크 사랑

KIMYEONGJUN·2024년 11월 4일
post-thumbnail

문제

내가 생각했을때 문제에서 원하는부분

첫째 줄에 테스트 케이스의 개수가 주어진다.
각 테스트 케이스는 빈 줄로 구분되며,
두 줄로 이루어져 있다.
테스트케이스의 첫째 줄에는 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();
    }
}

마무리

코드와 설명이 부족할수 있습니다. 코드를 보시고 문제가 있거나 코드 개선이 필요한 부분이 있다면 댓글로 말해주시면 감사한 마음으로 참고해 코드를 수정 하겠습니다.

profile
Junior backend developer

0개의 댓글