3KG, 5KG 봉지를 최소한으로 사용하면서 설탕 배달을 가자!
최소한의 봉지를 이용한다는 것은 가급적 5Kg 봉지를 최대한 많이 사용하면서 3KG는 적게 사용하는 경우가 될 것이다. 이를 위해서 KG=0이 될때까지 반복을 while로 계속 돌리고, 만약에 KG를 5로 나누었을 떄 나머지가 0 즉 잘 나누어진다면 굳이 더 계산할 필요없이 break를 통해 반복문을 탈출한다.
당연하게도 5로 바로 나누어지는 경우보다는 그렇지 않은 경우가 더욱 많을 것이다. 이런 경우에는 일단은 최소 봉지인 3KG으로 지속적으로 담으면서 5Kg로 나머지를 다 담아버릴 수 있는지를 조건문을 통해 계속 감시한다.
항상 C언어를 사용하다가 이번에는 파이썬을 이용해서 코드를 작성하였다. C언어를 이용하는 것이 나에게 가장 편하고 적합하긴 하지만 파이썬을 이용해서 작성을 해보니 확실히 코드에 길이가 짧고 훨씬 간편하게 코드를 작성할 수 있었다.
사실 이 문제는 2학년 2학기 겨울방학에 한 참 코드 문제를 풀 때 어떻게 풀 수 있을지 몰라 적당히 고민하다 포기했던 문제이다. 하지만 우연치 않게 학교에 다른 학과 사람들이 C언어에 대해 질문을 하였는데, 이 설탕 배달 문제와 매우 유사하였고 적당히 고민에 시간을 가지고 문제를 해결하였다. 그 동안 내 코딩 능력이 조금 늘어났던 것인지 조금만 더 고민했더라면 내가 풀 수 있었던 것인지는 모르겠다. 사실 학기가 시작하고 알고리즘 풀이에 대해 소홀하였는데, 앞으로는 학기 중이라도 게임을 하기보다는 알고리즘을 조금씩 풀어보는 습관을 가지는게 좋을 것 같다.
KG = int(input())
KG3= 0;
KG5 = 0;
Fail = 0;
while(KG != 0):
if(KG % 5 == 0):
KG5 = int(KG / 5);
break;
elif KG >= 3:
KG3 = KG3+1;
KG = KG -3;
if(KG == 1 or KG == 2 or KG == 4):
print("-1")
Fail = 1
break;
if Fail == 0:
print(KG5 + KG3)