공부 기록장
[백준 - Python] 2839. 설탕배달 (그리디) 본문
https://www.acmicpc.net/problem/2839
코드
n = int(input())
cnt = 0
while True:
if n < 0: # N을 만들 수 없는 경우
cnt = -1
break
if n % 5 == 0:
cnt5 = n // 5
cnt += cnt5
break
n -= 3
cnt += 1
if n == 0:
break
print(cnt)
5kg 봉지로 가져가면 가져가는 봉지의 개수를 줄일 수 있으므로,
최대한 5kg 봉지를 많이 써서 가져갈 수 있게 해야 한다는 아이디어를 떠올리는게
문제 해결의 포인트이다.
무한 반복문을 돌면서 5로 나누어보고
나누어지지 않으면 3을 1번씩 빼보면서 다시 확인해보는 식으로 아이디어를 구현할 수 있다.
문제에서 정확하게 만들어 지지 않은 경우에는 -1을 출력한다고 나와있다.
따라서, 3, 5kg 봉지만으로는 나눠지지 않는 불가능한 경우에 대한 처리를 해주어야 한다.
그 경우에 대한 처리가 가장 위의 if문이다.
마지막의 if문은 3kg으로만 가져가게 되는 경우에 대한 처리이다.
'코딩 테스트 > 백준 문제 풀이' 카테고리의 다른 글
[백준 - Python] 13305. 주요소 (그리디) (1) | 2024.01.03 |
---|---|
[백준 - Python] 2217. 로프 (그리디) (1) | 2024.01.03 |
백준 2108. 통계학 (0) | 2023.12.31 |
백준 1966. 프린터 (0) | 2023.12.31 |
백준 1158. 요세푸스 문제 (0) | 2023.12.31 |