© 2025 anveloper.dev
GitHub·LinkedIn·Contact

목차

  • 문제
  • 입력
  • 출력
  • 예제
  • 풀이
  • 코드
  • 복잡도
풀이 목록으로 돌아가기

BOJ 1817 - 짐 챙기는 숌

2025-07-15
BOJ
실버 V
python
원본 문제 보기
구현
그리디 알고리즘
시뮬레이션

문제

BOJ 1817 - 짐 챙기는 숌

N권의 책을 무게 제한 M인 박스에 순서대로 넣을 때, 필요한 최소 박스 수를 구하라.

입력

책의 수 N과 무게 제한 M, 이후 N개의 책 무게가 주어진다.

출력

필요한 박스 수를 출력한다. N이 0이면 0을 출력한다.

예제

입력출력
5 6 1 2 3 4 53

풀이

그리디하게 현재 박스에 넣을 수 있으면 넣고, 아니면 새 박스를 연다.

  1. 현재 박스 무게에 책을 더했을 때 M 이하이면 추가한다
  2. M을 초과하면 새 박스를 열고 해당 책을 넣는다
  3. 최종 박스 수를 출력한다

핵심 아이디어: 책을 순서대로 넣어야 하므로, 현재 박스에 넣을 수 있는지만 확인하는 단순 그리디로 해결된다.

코드

n, m = map(int, input().split())
 
w = 0
cnt = 1
if n != 0:
    arr = list(map(int, input().split()))
    for i in arr:
        if w + i <= m:
            w += i
        else:
            cnt += 1
            w = i
    print(cnt)
else:
    print(0)

복잡도

  • 시간: O(N)
  • 공간: O(N)