
처음엔 if문으로 가능한 경우의 수를 모두 나누어 풀려고 했으나 잘 되지 않았다. 그래서 결국 다른 사람들의 코드를 참고하여 문제를 풀었다.
일단 설탕봉지의 갯수를 최소로 할 수 있는 방법은 가능한대로 5kg 봉지에 설탕을 담는 것이다.
설탕봉지의 갯수가 최대가 되는 상황은 3kg봉지로만 설탕을 담는 상황이다.
N킬로그램의 설탕을 5kg봉지에 가능한 담고나면 세 가지 상황이 생긴다.
1)설탕을 5kg에 남김없이 담았다. 이 경우 만들어진 5kg봉지 갯수 그대로를 출력하게 하면 된다.
2)설탕을 5kg에 가능한 담았으나, 5kg 봉지를 채우기 부족한 나머지 설탕들이 남았다. 이 경우 5kg 봉지의 설탕을 풀어 나머지 설탕에 더하고 그 설탕들을 3kg 봉지에 담는다. 설탕들이 3kg 봉지에 남김없이 들어갈 때 까지 5kg봉지를 푸는 것을 반복한다.
3)위의 시도로 불가능하면 -1을 리턴하면 된다.
1 2 3 4 5 6 7 8 9 10 11 12
| sweet = int(input()) five_bag = sweet//5 sweet%=5 three_bag=0 while five_bag >= 0: if sweet%3 ==0: three_bag = sweet//3 sweet = sweet%3 break five_bag-=1 sweet +=5 print((sweet==0) and (five_bag + three_bag) or -1)
| |