[프로그래머스] 구현 – 콜라문제

참조: https://school.programmers.co.kr/learn/courses/30/lessons/42862

문제


[프로그래머스] 구현 - 콜라문제 1


[프로그래머스] 구현 - 콜라문제 2

문제는:

설명


[프로그래머스] 구현 - 콜라문제 3

다음과 같이 (2)개의 빈 병을 가져오면 b(1)개의 병을 반환하는 시장이 있습니다.

병과 빈 병을 계속 얻는다면 결국 몇 병을 얻을 수 있습니까?

출력에 관한 것입니다.

n이 20에서 시작하여 2로 더 나누면 최대 10,5,2,1까지 병을 얻을 수 있습니다.

세 번째 과정에서 한 병이 남아있는 것을 볼 수 있습니다.

이 점을 명심하면 남은 병 위에 여분의 병이 남게 될 것입니다.

그러면 10 + 5 + 2 + 1 + 1이 되어 총 19병이 됩니다.

def solution(a, b, n):
    answer = 0
    
    while n >= a:
        cnt = n // a * b
        rest = n % a
        answer += cnt
        n = cnt + rest
    
    return answer

공책에서 해결 규칙을 찾을 수 있었고,

우리가 세고 있는 병은 n을 a 곱하기 b로 나눈 몫과 같습니다.

3번째 과정과 같이 몫으로 나눈 나머지가 존재할 수 있으므로 나머지를 선언한다.

n이 a보다 크거나 같고 n이 카운트에 나머지를 더할 때까지 이 프로세스를 반복합니다.

답에 카운트를 더하는 것을 계속 반복하며 업데이트하면 정답이 됩니다.

화이팅