[프로그래머스/Python] 콜라 문제 Lv1

mj·6일 전

Algorithm

목록 보기
77/78
post-thumbnail

[프로그래머스/Python] 콜라 문제 Lv1


문제

빈 병 a개를 가져가면 콜라 b병을 받을 수 있다.
현재 가지고 있는 빈 병이 n개일 때, 최대로 받을 수 있는 콜라 병 수를 구하는 문제이다.


요구사항 분석

1) 교환 조건

  • 빈 병이 a개 이상 있어야 교환 가능하다.
  • 한 번에 여러 번 교환 가능하다. (예: 10개면 5번 교환)

2) 반복 구조

  • 교환할 때마다

    • 새로 받은 병을 더하고
    • 남은 병을 다음 턴으로 넘긴다.

3) 종료 조건

  • 더 이상 교환할 수 없을 때 (n < a) 반복 종료

나의 풀이 과정

첫 번째 시도 : 통과

통과되긴하지만 더 간단하게 작성할 수 있다.

def solution(a, b, n):
    answer = 0
    bottles = n
    
    while bottles >=  a:
        x = (bottles // a) * a
        bottles -= x
        
        received = (x // a) * b
        answer += received
        bottles += received 
        
    return answer

💻 정석 코드

def solution(a, b, n):
    answer = 0

    while n >= a:
        new_cola = (n // a) * b
        answer += new_cola
        n = (n % a) + new_cola

    return answer

배운점

  • x와 같이 모호한 변수명은 사용하지 말자.
profile
일단 하자.

0개의 댓글