[백준/JAVA] 2520번 팬케이크 사랑

정은아·2025년 3월 2일

[알고리즘] 수학 모음

목록 보기
150/152
post-thumbnail

문제

백준 2520번 팬케이크 사랑 JAVA

내 풀이 1 : 실패한 코드

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringBuilder sb = new StringBuilder();

        // 우유 8컵 노른자 8개 설탕 4스푼 소금 1스푼 밀가루 9개 = 팬케이크 반죽 16개
        // 그리고 각종 토핑에 따라 다른 팬케이크로 완성된다.
        // 이 때, 바나나는 여러 조각으로 나누거나 여러 조각을 합쳐서 사용 가능하다.
        // 주어진 재료로 만들 수 있는 퍈캐아크의 최대 개수는?

        // 1. 테스트케이스가 주어진다.
        // 1-1. 우유, 노른자, 설탕, 소금, 밀가루가 주어진다.
        // 1-2. 바나나, 딸기잼, 초콜릿, 호두가 주어진다.

        int num = Integer.parseInt(br.readLine());

        for (int i = 0; i < num; i++) {

            br.readLine();

            StringTokenizer st = new StringTokenizer(br.readLine());
            int milk = Integer.parseInt(st.nextToken());
            int egg = Integer.parseInt(st.nextToken());
            int sugar = Integer.parseInt(st.nextToken());
            int salt = Integer.parseInt(st.nextToken());
            int powder = Integer.parseInt(st.nextToken());

            st = new StringTokenizer(br.readLine());
            int banana = Integer.parseInt(st.nextToken());
            int straw = Integer.parseInt(st.nextToken());
            int choco = Integer.parseInt(st.nextToken());
            int walnut = Integer.parseInt(st.nextToken());

            int answer = 0;

            // 만들 수 있는 팬케이크의 반죽을 계산한다.
            int panCake = Math.min(Math.min(Math.min(milk / 8, egg / 8), 
            Math.min(sugar / 4, salt)), powder / 9);

            // 토핑을 이용해 만들 수 있는 팬케이크 계산하기
            int maxToppings = Math.min(Math.min(banana, straw / 30),
            Math.min(choco / 25, walnut / 10));

            // 최종적으로 만들 수 있는 팬케이크 개수는?
            answer = Math.min(panCake, maxToppings);
            sb.append(answer).append("\n");

        }

        System.out.println(sb.toString());
    }
}

내 풀이 2: 정답입니다

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringBuilder sb = new StringBuilder();

        int num = Integer.parseInt(br.readLine());

        // 반죽 1세트 당 필요한 재료
        double milk = 0.5;
        double egg = 0.5;
        double sugar = 0.25;
        double salt = 0.0625;
        double powder = 0.5625;

        // 토핑
        int banana = 1;
        int strawberry = 30;
        int choco = 25;
        int walnut = 10;

        for (int i = 0; i < num; i++) {
            br.readLine();
            StringTokenizer st = new StringTokenizer(br.readLine());

            int MILK = (int) (Integer.parseInt(st.nextToken()) / milk);
            int EGG = (int) (Integer.parseInt(st.nextToken()) / egg);
            int SUGAR = (int) (Integer.parseInt(st.nextToken()) / sugar);
            int SALT = (int) (Integer.parseInt(st.nextToken()) / salt);
            int POWDER = (int) (Integer.parseInt(st.nextToken()) / powder);

            int panCake = Math.min(MILK, Math.min(EGG,
            Math.min(SUGAR, Math.min(SALT, POWDER))));

            st = new StringTokenizer(br.readLine());

            int BANANA = Integer.parseInt(st.nextToken()) / banana;
            int STRAWBERRY = Integer.parseInt(st.nextToken()) / strawberry;
            int CHOCO = Integer.parseInt(st.nextToken()) / choco;
            int WALNUT = Integer.parseInt(st.nextToken()) / walnut;

            // 모든 팬케이크 수의 합
            int totalCake = BANANA + STRAWBERRY + CHOCO + WALNUT;

            // 최종적으로 만들 수 있는 케이크
            int answer = Math.min(panCake, totalCake);

            sb.append(answer).append("\n");
        }

        System.out.println(sb.toString());
    }
}

느낀점

profile
꾸준함의 가치를 믿는 개발자

0개의 댓글