본문 바로가기

Algorithm

콜라 문제 / 프로그래머스

 

첫번째 풀이

  • 나머지를 담는 dum 변수
  • 나머지와 n을 더했을 때 a보다 크다면 다시 콜라로 교환하고 반복문 종료
  • 나머지와 n을 더했을 때 a보다 크다면 다시 콜라로 교환한 후에 다시 반복문을 돌아야 하는 경우가 있을 수도 있으므로 틀림
def solution(a, b, n):
    ans = 0
    dum = 0

    while True:
        if n < a:
            if n + dum >= a:
                n = n + dum
                cola = n // a
                ans += cola * b
                break
            else:
                break
        cola = n // a
        dum = dum + (n % a)
        ans += cola * b
        n = n // a * b
    return ans

 

 

정답

  • 나머지를 담는 변수 제거
  • 이렇게 짜면 나머지를 포함해서 교환을 하고, 이어서 또 교환을 진행 할 수 있을 때 계속 진행할 수 있음
def solution(a, b, n):
    ans = 0
    while True:
        if n < a:
            break;
        ans += (n // a) * b
        n = (n // a) * b + (n % a) 
        
    return ans