[백준] 2839번: 설탕 배달 [python]

Boknami·2022년 5월 15일
0

백준문제풀이

목록 보기
20/45

📑문제

3KG, 5KG 봉지를 최소한으로 사용하면서 설탕 배달을 가자!


💡 핵심 포인트

어떻게 하면 최소 봉지를 이용할까?

최소한의 봉지를 이용한다는 것은 가급적 5Kg 봉지를 최대한 많이 사용하면서 3KG는 적게 사용하는 경우가 될 것이다. 이를 위해서 KG=0이 될때까지 반복을 while로 계속 돌리고, 만약에 KG를 5로 나누었을 떄 나머지가 0 즉 잘 나누어진다면 굳이 더 계산할 필요없이 break를 통해 반복문을 탈출한다.

5로 바로 안나누어진다면?

당연하게도 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)

0개의 댓글