인천의 자유인

[Python] 콜라 문제 - 프로그래머스(Lv.1) 본문

Python/Python코딩테스트

[Python] 콜라 문제 - 프로그래머스(Lv.1)

Youngook 2024. 6. 25. 08:40
728x90
반응형

 

반응형

 

 

나의 문제 풀이

def solution(a,b,n):
    total = 0
    remain = 0
    while n>0:
        remain = remain + n%a
        n = (n // a)*b
        total += n
        if n%a != 0:
            n = n + remain
            remain = 0
    return total

 

먼저 총 받을 개수를 구하기 위한 total를 만들고 그리고 나눴을 때 나머지가 될 remain이라는 변수를 만들어 줍니다. 그것을 만든 후에는 n이 0이 될 때 까지 계속 루프를 돌립니다.

 

remain을 만들어 둔 이유는 10/2 같이 나누어 떨어질 경우에는 필요가 없지만 5/2같이 나누어 떨어지지 않은 경우도 많습니다. 남는 값을 버릴 수 없고 활용해야 하기 때문에 나누어 떨어지지 않을 경우에는 그동안 모아 두었던 것을 그 값에 더해서 나누어 떨어져서 구할 수 있도록 합니다. 그리고 다시 초기화를 해야 할 필요가 있기 때문에 remain을 0으로 만들어 주어야 한다는 점을 잊어선 안됩니다.

 

이것이 완료가 됬다면 이제는 줄 병이 없을 때 까지, 즉 n이 0이 될 때 까지 계속 더한 후 while문에서 그동안 쌓아온 total의 값을 return해 주면 문제는 해결됩니다.

728x90
반응형