📦 문제 요약
- 참가자 수 N명
- 티셔츠는 6가지 사이즈별로 개수가 주어지고, 티셔츠는 T장씩 한 묶음으로만 주문 가능
- 펜은 P자루씩 한 묶음으로 주문할 수 있고, 나머지는 낱개로 주문
- 출력은:
- 티셔츠를 모든 사람에게 맞춰서 줄 수 있도록 하려면 최소 몇 묶음이 필요한지
- 펜은 묶음으로 최대 몇 개, 그리고 몇 개는 낱개로 사야 하는지
💡 아이디어 (접근법만!)
- 티셔츠: 각 사이즈마다 필요한 수를 T로 나눔
- (필요한 수 + T - 1) // T 공식 사용하면 부족하지 않게 묶음 계산 가능
- 펜: 전체 인원 N을 P로 나누면
- 몫 = 묶음 수
- 나머지 = 낱개로 주문해야 하는 수
🚨 팁
- 입력이 많진 않지만, sys.stdin.readline() 쓰면 더 안전
- 반복문 대신 나눗셈으로 계산하면 시간 초과 안 남
- 출력 형식 주의:
- 첫 줄: 티셔츠 묶음 수
- 둘째 줄: 펜 묶음 수와 낱개 수를 한 줄에 출력
1차 코드 - 시간초과
import sys
N = int(sys.stdin.readline())
size = list(map(int, sys.stdin.readline().split()))
T,P = map(int,sys.stdin.readline().split())
Tshirt = 0
pen = 0
pen_else = 0
for i in size:
while True:
if i <= T:
Tshirt += 1
break
else:
i = i - T
Tshirt += 1
while True:
if N < P:
pen_else = N
break
else:
N = N - P
pen += 1
print(Tshirt)
print(pen, pen_else)
2차 수정
import sys
input = sys.stdin.readline
# 입력 받기
N = int(input())
sizes = list(map(int, input().split()))
T, P = map(int, input().split())
# 티셔츠 묶음 계산
tshirt_bundles = 0
for size in sizes:
if size == 0:
continue
tshirt_bundles += (size + T - 1) // T
# 펜 묶음 계산
pen_bundles = N // P
pen_individuals = N % P
# 결과 출력
print(tshirt_bundles)
print(pen_bundles, pen_individuals)
'매일 BOJ' 카테고리의 다른 글
| (매일 BOJ) Python 2231번 분해합 (0) | 2025.03.25 |
|---|---|
| (매일 BOJ) Python 1978번 소수 찾기 (0) | 2025.03.23 |
| (매일 BOJ) Python 4153번 직각삼각형 (0) | 2025.03.23 |
| (매일 BOJ) Python 1157번 단어 공부 (0) | 2025.03.23 |
| (매일 BOJ) Python 11650 좌표 정렬하기 (0) | 2025.03.23 |