본문 바로가기
알고리즘/프로그래머스

프로그래머스 Lv1 콜라 문제 (python)

by 개발하는 호랑이 2024. 2. 3.

콜라 문제

 

풀이

문제의 상위 지문을 잘 못 이해하고 있어서 시간이 조금 걸렸다.
그것만 아니었다면 금방 풀었다.

  1. 빈 병을 주면 그것으로 총 몇 개의 콜라로 바꿔먹을 수 있냐를 제시한 문제이다.
  2. 모든 받은 콜라의 개수를 기록한 변수를 지정.
  3. while문을 돌면서 빈 병을 바꿀 수 있는 개수로 divmod를 이용해 파악하고 바꿀 수 있는 개수를 coke로 곱하면 이번에 바꾼 콜라 수
  4. 빈병은 못 바꾼 빈 병과 함께 바꾼 콜라를 비웠으니 이를 합하면 다시 빈 병이 됨
  5. 이 while문은 현재 가진 빈병이 바꿀 수 있는 빈병보다 적지 않을 때까지 반복.
  6. 모든 바꿔먹은 콜라 갯수를 return
# 3개를 가져다주면 2개를 주는 경우도 생각해봐야함
def solution(bottle, coke, empty_coke):
    all_coke = 0
    # 문제에서 단, 보유 중인 빈 병이 2개 미만이면, 콜라를 받을 수 없다. 는 잘 해석해야함.
    while empty_coke >= bottle:
        tmp_coke, tmp_bottle =  divmod(empty_coke, bottle)
        all_coke += tmp_coke * coke
        empty_coke = tmp_bottle + (tmp_coke * coke)
    return all_coke

다른 사람 풀이

딱히 다른 건 없다.

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