코테 대비 python/백준
1817
ylab
2023. 1. 25. 16:57
https://www.acmicpc.net/problem/1817
1817번: 짐 챙기는 숌
첫째 줄에 책의 개수 N과 박스에 넣을 수 있는 최대 무게 M이 주어진다. N은 0보다 크거나 같고 50보다 작거나 같은 정수이고, M은 1,000보다 작거나 같은 자연수이다. N이 0보다 큰 경우 둘째 줄에 책
www.acmicpc.net
# 제한 조건 책이 탑처럼 쌓여 있다. => 스택 자료구조 의심
# 예제를 통해서 살펴본결과 큐인데??
from collections import deque
N, M = map(int, input().split(' '))
if N==0 :
pass
else:
book_list = list(map(int, input().split(' ')))
queue = deque(book_list)
# 경우의수 나누기
# 1. N이 0일경우 print(0)
# 2. 책의 무게가 상자를 넘길경우?! 빼기로 접근??
cnt=0
tmp = M
if N== 0:
pass
else:
for _ in range(N):
a= queue.popleft()
#print(a)
#리셋 or 처음
if M==tmp:
cnt+=1
M=M-a
#print(M)
elif M - a >0:
M=M-a
#print(M)
elif M-a <0 :
cnt+=1
M = tmp
M = tmp -a
#print(M)
elif M==0:
cnt+=1
M=tmp
M=tmp-a
#print(M)
else:
#cnt+=1
M=tmp
#M=tmp-a
#print(M)
print(cnt)
시간 뺐기기 딱좋은듯 처음에 코드 구상에 경우의수 확실히 나누어야 할듯
예제에서 걸려서 찾았지 아니었으면 못풀었을듯
일단 큐를 쓴다는 발상
from collections import deque