
문제
백준 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());
}
}
느낀점