30802번 웰컴키트 Python(수학 알고리즘)
30802번 웰컴키트 : 파이썬(Python)
https://www.acmicpc.net/problem/30802
목차
문제
2024년 2월 3일 개최 예정인 온사이트 그랜드 아레나에서는 참가자들에게 티셔츠 한 장과 펜 한 자루가 포함된 웰컴 키트를 나눠줄 예정입니다. 키트를 제작하는 업체는 다음과 같은 조건으로만 주문이 가능합니다.
- 티셔츠는 S, M, L, XL, XXL, 그리고 XXXL의 6가지 사이즈가 있습니다. 티셔츠는 같은 사이즈의 장 묶음으로만 주문할 수 있습니다.
- 펜은 한 종류로, 자루씩 묶음으로 주문하거나 한 자루씩 주문할 수 있습니다.
총 명의 참가자 중 S, M, L, XL, XXL, XXXL 사이즈의 티셔츠를 신청한 사람은 각각 명입니다. 티셔츠는 남아도 되지만 부족해서는 안 되고 신청한 사이즈대로 나눠주어야 합니다. 펜은 남거나 부족해서는 안 되고 정확히 참가자 수만큼 준비되어야 합니다.
티셔츠를 장씩 최소 몇 묶음 주문해야 하는지, 그리고 펜을 자루씩 최대 몇 묶음 주문할 수 있고, 그때 펜을 한 자루씩 몇 개 주문하는지 구하세요.
입력
첫 줄에 참가자의 수 이 주어집니다. (1≤𝑁≤109)
둘째 줄에 티셔츠 사이즈별 신청자의 수 𝑆,𝑀,𝐿,𝑋𝐿,𝑋𝑋𝐿,𝑋𝑋𝑋𝐿 이 공백으로 구분되어 주어집니다.
셋째 줄에 정수 티셔츠와 펜의 묶음 수를 의미하는 정수 와 가 공백으로 구분되어 주어집니다.
출력
첫 줄에 티셔츠를 장씩 최소 몇 묶음 주문해야 하는지 출력하세요.
다음 줄에 펜을 자루씩 최대 몇 묶음 주문할 수 있는지와, 그때 펜을 한 자루씩 몇 개 주문하는지 구하세요.
문제 요소 찾기
우선 문제를 읽어보면 입력에
1번 줄에 티셔츠의 개수(23벌),
2번 줄에 사이즈별 티셔츠 개수(S : 3, M : 1, L : 4, XL : 1, XXL : 5, XXXL: 9) 총 23벌
3번 줄에 티셔츠 묶음(5벌씩)과 펜의 묶음(7자루씩)이 나와있다.
출력 값에는 1번 줄에 티셔츠를 몇 장 사야 하는지, 즉 5벌을 초과하면 그 사이즈 세트는 2세트를 사야 하는 것이다.
위에 식에는 XXXL만 5를 초과하므로 XXXL 세트는 2개 시킨다. 나머지는 1세트씩 주문하면 총 7세트가 된다.
2번 출력값은 23벌에 7세트가 넘지 않을 때까지 곱한 값.
즉 23 // 7을 출력하고, 다음은 나머지인 23 % 7을 출력하면 될 것 같다.
내가 푼 코드
import math
N = int(input())
size = list(map(int, input().split()))
T, P = map(int, input().split())
shirt = 0
for i in range(len(size)):
shirt += math.ceil(size[i]/T)
print(shirt)
print(N//P, N%P)
1. import math 라이브러리를 끌고 온다.
2. 티셔츠의 개수 N을 입력받는다.
3. 옷 사이즈별 개수를 리스트로 입력받는다.
4. 티셔츠 묶음 T와 볼펜 묶음 P를 각각 입력받는다.
5. shirt라는 정수형 변수를 초기화해서 티셔츠 세트를 몇 개 주문해야 되는지 넣어준다.
6. for문을 list의 길이만큼 돌려 shirt에 주문해야 할 개수를 넣어준다. 여기서 5를 초과하는데, 그냥 나누기를 하면 1.nnnn... 식으로 나와버리니 math 라이브러리의 ceil 함수를 이용하여 5를 초과하는 경우 올림 처리를 해준다.
7. 첫 째 줄에 shirt 세트 개수를 출력하고 둘 쨰 줄에 볼펜 세트 개수와, 낱개를 출력한다.
끝!!!
읽어주셔서 감사합니다! 궁금하신 사항이나 피드백 사항 있으시면 언제든 댓글 남겨주세요.