## solution
정확히 N킬로그램을 배달해야 한다, 3킬로그램, 5킬로그램 봉지가 있다. 최대한 적은 봉지를 들고가려고 한다.
18킬로그램을 배달시 3킬로그램 6개도 가능하지만, 5킬로그램 3개 3킬로그램 1개면 더 적은 개수의 봉지로 가능하다.
정확히 N킬로그램 배달해야 할시, 봉지 몇 개를 가져가면 되는지 작성하기.
봉지가 적게 나와야 하므로, 5로 나누었을때의 몫을 계산해보자.
18킬로그램을 5로 나누면 몫이 3 나머지가 3이므로 몫 3에 나머지가 있으므로 +1 해서 4봉지가 필요한데, 정확히 18킬로그램이 되지는 않는다.
5킬로그램 4-1(3봉지)의 경우라면, 5킬로그램 3봉지 3킬로그램 1봉지로 가능하다.
5로 나누어서 먼저 몫과 나머지를 구하고, 하나씩 빼고 3킬로그램을 늘리면서 숫자를 맞춰주면 될것으로 보인다.
## CODE
```python
input_kg = int(input())
count5 = input_kg//5 if input_kg%5==0 else input_kg//5 + 1
count3 = 0
while(True):
if count5 == -1:
break
if (count5*5 + count3*3) == input_kg:
break
else:
count5 -= 1
count3 = (input_kg - count5*5)//3 if (input_kg- count5*5)%3==0 else (input_kg - count5*5)//3 + 1
print(-1 if count5 == -1 else count3+count5)
```
반복문에서 count5 -= 1, count3 += 1 하면, 9를 입력했을때 결과가 -1이 나온다.
5킬로그램 봉지의 수를 줄일때 3킬로그램 봉지의 수는 5킬로그램의 봉지를 구할때처럼 몫을 구해서 다시 계산해야한다.
짧은 풀이들도 대부분 비슷한느낌으로 보인다. range(5의개수+1) 이런식으로 for문 사용시 break는 하나만 쓸수 있겠다.
0 댓글