문제
https://www.acmicpc.net/problem/1817
1817번: 짐 챙기는 숌
첫째 줄에 책의 개수 N과 박스에 넣을 수 있는 최대 무게 M이 주어진다. N은 0보다 크거나 같고 50보다 작거나 같은 정수이고, M은 1,000보다 작거나 같은 자연수이다. N이 0보다 큰 경우 둘째 줄에 책
www.acmicpc.net
코드
n, m = map(int,input().split())
if n == 0:
print(0) # 책 없으면 박스 0개
else:
w = list(map(int,input().split()))
box = 0
cnt = 1 # 책이 하나라도 있으면 cnt가 1
for i in range(n-1, -1, -1): # 역순회
box += w[i]
if box > m : # 한 박스의 무게가 최대 무게를 초과하는 경우
cnt += 1 # 박스의 개수를 추가
box = w[i] # 현재 책은 새 박스에 넣음
print(cnt)
해설
- 책은 탑처럼 차곡차곡 싸여있다 -> 역순으로 순회
- 상자 최대 무게를 초과하면 cnt에 +1 하고, 현재 책 무게로 재설정.
- 박스의 개수의 최솟값은 cnt
'Coding Test > 백준' 카테고리의 다른 글
[백준(Python)] 10845번 : 큐 (0) | 2023.12.05 |
---|---|
[백준(Python)] 11399번 : ATM (0) | 2023.12.04 |
[백준(Python)] 11053번 : 가장 긴 증가하는 부분 수열 (0) | 2023.11.30 |
[백준(Python)] 1343번 : 폴리오미노 (1) | 2023.11.30 |
[백준(Python)] 2847 : 게임을 만든 동준이 (1) | 2023.11.30 |