본문 바로가기
Python/알고리즘

[COS PRO 2급 #6-5] 음료수 마시기

by 포푸리 (POPOOLY) 2023. 2. 9.
반응형

문제설명

X 마트에서는 빈 병 n개와 음료수 한 병을 교환해줍니다.

예를 들어, 현재 가진 돈이 8원, 음료수 한 병은 2원이고 n이 4라면 음료수 4개를 살 수 있습니다. 음료수 네개를 다 마신 후, 남은 빈 병 4개를 가져가면 음료수를 한 병 더 받을 수 있습니다. 따라서 8원으로는 음료수를 총 5병 마실 수 있습니다.

가진 돈 money, 음료수 한 병의 가격 price, 음료수 한 병과 교환하는데 필요한 빈 병의 수 n이 매개변수로 주어질 때, 마실 수 있는 총 음료수의 수를 return 하도록 solution 함수를 작성했습니다. 그러나, 코드 일부분이 잘못되어있기 때문에, 몇몇 입력에 대해서는 올바르게 동작하지 않습니다. 주어진 코드에서 _**한 줄**_만 변경해서 모든 입력에 대해 올바르게 동작하도록 수정하세요.

매개변수 설명

가진 돈 money, 음료수 한 병의 가격 price, 음료수 한 병과 교환하는데 필요한 빈 병의 수 n이 solution 함수의 매개변수로 주어집니다.
* 가진 돈 money는 1 이상 1,000 이하인 자연수입니다.
* 음료수 한 병의 가격 price는 1 이상 100 이하인 자연수입니다.
* 음료수 한 병과 교환하는데 필요한 빈 병의  수 n은 3 이상 10 이하인 자연수입니다.

return 값 설명

마실 수 있는 총 음료수의 수를 return 해주세요.

예시

| money | price | n | return |
|-------|-------|---|--------|
| 8  | 2  | 4 | 5   |
| 6  | 2  | 2 | 5   |

예시설명

예제 #1
문제에 나온 예와 같습니다.

예제 #2
1. 6원으로 2원짜리 음료수 3개를 삽니다.
2. 음료를 다 마시면 빈 병 3개가 남습니다. 이 중 빈 병 두개를 가져가 새 음료수 한 병과 교환합니다.
3. 음료를 마시면 빈 병 2개가 남습니다. 이를 새 음료수 한 병으로 교환합니다.
따라서 총 6원으로는 음료수 5병을 마실 수 있습니다.

문제 코드

def solution(money, price, n):
    answer = 0
    empty_bottle = answer = money // price
    while n <= empty_bottle:
        empty_bottle = empty_bottle + n
        answer += 1
        empty_bottle += 1
    return answer

풀이

def solution(money, price, n):
    answer = 0
    empty_bottle = answer = money // price
    while n <= empty_bottle:
        # n개의 빈병으로 음료수 한병 교환
        empty_bottle = empty_bottle - n
        answer += 1
        empty_bottle += 1
    return answer

댓글