728x90
문제
Nkg 그램의 설탕을 배달하려고 할 때 5kg, 3kg 박스에만 담아서 배달하려고 한다.
배달을 할 때 박스를 최소한으로 사용해서 배달을 해보자
입력
배달해야 할 설탕의 무게 N이 입력된다.
출력
몇 개의 박스가 필요한지 출력하고 5kg와 3kg의 박스로만 배달할 수 없을 때는 -1을 출력한다.
접근
최소한의 박스를 사용하기 위해서는 5짜리 박스를 많이 사용해야 한다. 5를 사용하기 위해서는 무게가 5와 나누어 떨어져야 한다.
따라서 5와 나누어 떨어지면 5에 모두 담고 그렇지 않는다면 설탕의 무게를 3씩 빼주도록 한다.
구현
while문 안에서 구현되며 무게 N이 0이상일 때만 실행된다.
처음에 N이 5와 나누어 떨어지면 바로 최종해에 5로 나눈 몫을 더해주고 끝낸다.
그렇지 않다면 -3을 해주고 최종해에는 1을 더해준다.
만약 while문이 종료되었을 때 N이 음수라는 것은 계속 3으로만 빼줘서 음수가 되어 종료된 것이기 때문에 배달할 수 없게된다. 따라서 최종해에 -1을 대입한다.
N = int(input())
answer = 0
while N >= 0:
if N%5 == 0:
answer += N//5
break
N -= 3
answer += 1
if N < 0:
answer = -1
print(answer)
'알고리즘 풀이 > 백준' 카테고리의 다른 글
[백준 1149] RGB 거리 (0) | 2021.02.17 |
---|---|
[백준 1652] 누울 자리를 찾아라 (0) | 2021.02.17 |
[백준 1181] 단어 정렬 (0) | 2021.02.17 |
[백준 1764] 듣보잡 (0) | 2021.02.17 |
[백준 11403] 경로 찾기 (0) | 2021.02.17 |