반응형
[ Contents ]
1. 문제 (링크 참조)
2. 문제 풀이
1. 현재 책이 현재 박스에 들어가지 않으면, 3번으로 간다. 아니면 2번으로 간다.
2. 현재 책을 현재 박스에 넣는다. 다음 책을 손에 집고 1번으로 간다.
3. 현재 박스를 다른 쪽으로 치운 다음에, 테이프로 못 열게 봉인한다. 다음 박스를 앞으로 가져오고 1번으로 간다.
책을 박스에 보관할 때, 낭비되는 박스 용량을 구하는 문제입니다. 다국어 문제라서 번역이 조금 어색합니다. 위 로직을 조금 쉽게 풀어쓰면 아래와 같습니다.
1. 책이 박스에 들어가면 넣는다.
2. 책이 박스에 들어가지 않으면 다음 박스에 넣는다.
주의할 점은 쓰지 않은 박스도 '낭비된 용량'으로 취급합니다.
3. 코드
import sys
input = sys.stdin.readline
# 입력
N, M = map(int, input().split())
box = list(map(int, input().split()))
book = list(map(int, input().split()))
# 책 정리
idx = 0 # 박스 넘버
for b in book:
# 책이 박스에 들어갈 때까지 박스 교체
while True:
# 책이 박스에 들어감
if b <= box[idx]:
box[idx] -= b
break
# 책이 박스에 안 들어가면, 박스 교체
idx += 1
print(sum(box))
문제의 로직대로 풀면 위와 같습니다. 하지만 어차피 사용하지 않는 박스도 '낭비된 용량'으로 취급하기 때문에 [전체 박스의 용량 - 전체 책의 크기]를 구하면 됩니다.
import sys
input = sys.stdin.readline
# 입력
N, M = map(int, input().split())
box = list(map(int, input().split()))
book = list(map(int, input().split()))
# 출력
print(sum(box) - sum(book))
반응형
'Algorithm' 카테고리의 다른 글
[분할정복/DQ] 백준 11444 피보나치 수 6 - 파이썬(Python) (0) | 2022.05.14 |
---|---|
[수학/소수] 백준 1418 K-세준수 - 파이썬(Python) (0) | 2022.05.13 |
[구현/수학] 백준 2740 행렬 곱셈 - 파이썬(Python) (0) | 2022.05.11 |
[분할정복/DQ] 백준 10830 행렬 제곱 - 파이썬(Python) (0) | 2022.05.10 |
[동적계획법/DP] 백준 12865 평범한 배낭 - 파이썬(Python) (0) | 2022.05.09 |
댓글