

문제 출처 : https://www.acmicpc.net/problem/30802
난이도 : 브론즈 3
이 문제는 “웰컴키트”를 나눠주기 위해 필요한 포장(묶음) 수를 계산하는 문제이다.
입력은 크게 3줄:
N : 참가자 수
shirts : 티셔츠 사이즈별 신청자 수 6개 (S, M, L, XL, XXL, XXXL)
T, P
T : 티셔츠는 T장씩 한 묶음으로 포장됨
P : 펜은 P자루씩 한 묶음으로 포장됨
출력도 2줄:
티셔츠 묶음 총 몇 묶음 필요한지
펜 묶음은 order_P(묶음 수)와 each_P(남는 개수)
문제 독해가 생각보다 어려웠다.
결국 올림 나눗셈이 핵심이었다.
예를 들어 T=5일 때
size=10 => 10개면 2묶음 (딱 떨어짐) size=11 => 11개면 3묶음 (2묶음으로는 부족)
import sys
input = sys.stdin.readline
# 참가자 수
N = int(input())
# 사이즈별 신청자 수
shirts = list(map(int,input().split()))
# 티셔츠 묶음 , 펜의 묶음 수
T, P = map(int,input().split())
order_T = 0
for size in shirts:
order_T = order_T + (size-1) // T + 1
order_P = N // P
each_P = N % P
print(order_T)
print(order_P, each_P)
for size in shirts:
order_T = order_T + (size-1) // T + 1
에서 size-1 // T를 해주었는데
이유는 size가 5일 경우 order_T 는 논리상 1이어야 하지만 -1을 안해주면 2가 나오기때문에 조정해주었다.
만약 이런 조정이 직관적이지 않다면 math 라이브러리에 ceil 함수를 활용하자