✏️ 문제풀이/백준

[백준/Java] 30802번 :: 웰컴 키트

bono-hye 2024. 7. 14. 14:22

| 문제

2024년 2월 3일 개최 예정인 온사이트 그랜드 아레나에서는 참가자들에게 티셔츠 한 장과 펜 한 자루가 포함된 웰컴 키트를 나눠줄 예정입니다. 키트를 제작하는 업체는 다음과 같은 조건으로만 주문이 가능합니다.

  • 티셔츠는 S, M, L, XL, XXL, 그리고 XXXL의 6가지 사이즈가 있습니다. 티셔츠는 같은 사이즈의 𝑇장 묶음으로만 주문할 수 있습니다.
  • 펜은 한 종류로, 𝑃자루씩 묶음으로 주문하거나 한 자루씩 주문할 수 있습니다.

 𝑁명의 참가자 중 S, M, L, XL, XXL, XXXL 사이즈의 티셔츠를 신청한 사람은 각각 𝑆,𝑀,𝐿,𝑋𝐿,𝑋𝑋𝐿,𝑋𝑋𝑋𝐿 명입니다. 티셔츠는 남아도 되지만 부족해서는 안 되고 신청한 사이즈대로 나눠주어야 합니다. 펜은 남거나 부족해서는 안 되고 정확히 참가자 수만큼 준비되어야 합니다.

티셔츠를 𝑇장씩 최소 몇 묶음 주문해야 하는지, 그리고 펜을 𝑃자루씩 최대 몇 묶음 주문할 수 있고, 그 때 펜을 한 자루씩 몇 개 주문하는지 구하세요.

 

| 입력

첫 줄에 참가자의 수 𝑁이 주어집니다. (1≤𝑁≤10^9)

둘째 줄에 티셔츠 사이즈별 신청자의 수 𝑆,𝑀,𝐿,𝑋𝐿,𝑋𝑋𝐿,𝑋𝑋𝑋𝐿이 공백으로 구분되어 주어집니다. (0≤𝑆,𝑀,𝐿,𝑋𝐿,𝑋𝑋𝐿,𝑋𝑋𝑋𝐿≤𝑁; 𝑆+𝑀+𝐿+𝑋𝐿+𝑋𝑋𝐿+𝑋𝑋𝑋𝐿=𝑁)

셋째 줄에 정수 티셔츠와 펜의 묶음 수를 의미하는 정수 𝑇와 𝑃가 공백으로 구분되어 주어집니다. (2≤𝑇,𝑃≤10^9)

 

| 출력

첫 줄에 티셔츠를 𝑇장씩 최소 몇 묶음 주문해야 하는지 출력하세요.

다음 줄에 펜을 𝑃자루씩 최대 몇 묶음 주문할 수 있는지와, 그 때 펜을 한 자루씩 몇 개 주문하는지 구하세요.

 

| 풀이

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));

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

        StringTokenizer st = new StringTokenizer(br.readLine());
        StringBuilder sb = new StringBuilder();
        int[] size = new int[6];

        for(int i=0; i<size.length; i++)
            size[i] = Integer.parseInt(st.nextToken());

        st = new StringTokenizer(br.readLine());
        int T = Integer.parseInt(st.nextToken());   // 티셔츠 묶음 수
        int P = Integer.parseInt(st.nextToken());   // 펜 묶음 수

        int tCount = 0; // 티셔츠 주문 묶음 수
        for (int j=0; j<size.length; j++) {
            tCount += size[j] / T;
            if(size[j] % T != 0)
                tCount++;
        }
        sb.append(tCount).append("\n");
        sb.append(N / P).append(" ").append(N % P);

        System.out.println(sb);
    }
}

 

| 정리

펜 묶음 수와 낱개 수는 간단하게 구할 수 있고

티 묶음 수만 경우를 나눠서 계산하면 해결!

사이즈 별 인원수와 티 묶음 단위를 나눈 몫을 더하고

만약 T의 배수가 아닐 경우 +1을 해줌. (최소 묶음 수가 아닌 최대 묶음 수를 구해야하기 때문!)