공부하기/백준

[Java] 백준 풀기 27964 - 콰트로치즈피자

XEV 2024. 3. 27. 22:11

자바 백준 27964번

실버 5

https://www.acmicpc.net/problem/27964

 

27964번: 콰트로치즈피자

치즈와 피자에 환장하는 비행씨는 매일같이 치즈피자를 사 먹다가 지갑이 거덜 나고 말았다. 만들어 먹는 것이 사 먹는 것보다 싸다는 것을 안 비행씨는 여러 가지 토핑을 가져와서 직접 피자를

www.acmicpc.net

 

 

 

 

 

문제 보기

분류: 구현, 자료 구조, 문자열, 해시를 사용한 집합과 맵

 

 

 

 

 

코드 풀이

import java.util.Scanner;
import java.util.HashSet;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        
        // 토핑의 개수 입력
        int n = sc.nextInt();
        
        // PizzaMaker 객체 생성
        PizzaMaker pizzaMaker = new PizzaMaker();
        
        // 토핑 추가
        for (int i = 0; i < n; i++) {
            String inputTopping = sc.next();
            pizzaMaker.addTopping(inputTopping);
        }
        
        // 콰트로치즈피자 만들기 가능 여부 확인 및 출력
        if (pizzaMaker.canMakeQuattroCheesePizza()) {
            System.out.println("yummy");
        } else {
            System.out.println("sad");
        }
    }
}

// 피자를 만드는 클래스
class PizzaMaker {
    // 중복이 없는 토핑을 저장하기 위한 HashSet
    private HashSet<String> uniqueToppings;
    
    // constructor
    public PizzaMaker() {
        uniqueToppings = new HashSet<>();
    }
    
    // 토핑 추가 메서드
    public void addTopping(String topping) {
        uniqueToppings.add(topping);
    }
    
    // 콰트로치즈피자를 만들 수 있는지 확인하는 메서드
    public boolean canMakeQuattroCheesePizza() {
        // 치즈 토핑의 개수를 저장하기 위한 변수
        int cheeseCount = 0;
        
        // 토핑 목록을 순회하며 치즈 토핑의 개수 계산
        for (String topping : uniqueToppings) {
            if (topping.endsWith("Cheese")) {  // 토핑이 "Cheese"로 끝나면
                cheeseCount++;  // 치즈 토핑 개수 증가
                // System.out.println(cheeseCount);
            }
        }
        
        // 치즈 토핑 개수가 4개 이상이면 콰트로치즈피자를 만들 수 있음
        return cheeseCount >= 4;
    }
}