백준 30802번 - 웰컴 키트

느린달팽이·2025년 8월 19일

백준 Java

목록 보기
13/14

📂 백준 30802번 - 웰컴 키트

문제 링크


📝 문제 설명

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

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

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

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

첫 줄에 참가자의 수
NN이 주어집니다.
(1N109)(1 \le N \le 10^9)

둘째 줄에 티셔츠 사이즈별 신청자의 수
S,M,L,XL,XXL,XXXLS, M, L, XL, XXL, XXXL이 공백으로 구분되어 주어집니다.
(0S,M,L,XL,XXL,XXXLN;(0 \le S, M, L, XL, XXL, XXXL \le N;
S+M+L+XL+XXL+XXXL=N)S + M + L + XL + XXL + XXXL = N)

셋째 줄에 정수 티셔츠와 펜의 묶음 수를 의미하는 정수
TT
PP가 공백으로 구분되어 주어집니다.
(2T,P109)(2 \le T, P \le 10^9)


출력

첫 줄에 티셔츠를
TT장씩 최소 몇 묶음 주문해야 하는지 출력하세요.
다음 줄에 펜을
PP자루씩 최대 몇 묶음 주문할 수 있는지와, 그 때 펜을 한 자루씩 몇 개 주문하는지 구하세요.


✅ 입력 예시

23

3 1 4 1 5 9

5 7

✅ 예제 출력

7

3 2

ex ) S, M, L, XL, XXL 사이즈 티셔츠를 11묶음씩 구매하고 XXXL 사이즈 티셔츠를 22묶음 구매합니다.

💡 풀이 코드 (풀이코드한 언어)

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

public class bj_30802 {

	public static void main(String[] args) throws IOException {
		
		//티셔츠는 남아도 되지만 부족해서는 안됨으로 (사이즈 선택한 사람수/ 티셔츠 묶음 수) 나머지 있으면 추가 주문
		//펜은 정확히 참가자 수 만큼 준비 (전체인원수/펜 묶음 수) 나머지 낱개
		
		BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
		
		int N = Integer.parseInt(bf.readLine()); // 참가자 수
		
		int[] sizeArr = new int[6]; //사이즈 배열
		
		StringTokenizer st = new StringTokenizer(bf.readLine());
		
		//각 사이즈안에 선택한 사람수 넣어주기
		for(int i =0; i<sizeArr.length; i++) {
			sizeArr[i] = Integer.parseInt(st.nextToken());
		}
		
		//셋째줄 값 받아서 넣기
		st = new StringTokenizer(bf.readLine());
		int T = Integer.parseInt(st.nextToken()); // 정수 티셔츠
		int P = Integer.parseInt(st.nextToken()); // 펜의 묶음 수 
		
		//묶음 수
		int cnt = 0;
		//(사이즈 선택한 사람수/ 티셔츠 묶음 수) 나머지 있으면 추가 주문
		for(int i = 0; i<sizeArr.length; i++) {
			cnt += sizeArr[i] / T;
			
			//나머지가 있을경우 +1 아니면 그대로
			cnt = sizeArr[i] % T > 0? cnt + 1 : cnt;
		}
		
		//t장씩 최소 묶음 주문 수
		System.out.println(cnt);
		//P자루씩 묶음수와 나머지 => 몫과 나머지
		System.out.println(N/P + " " + N%P);

	}

}

profile
한걸음이라도 제대로... 쓰임있는 앱을 만들자

0개의 댓글