Lv.1) 콜라 문제
문제 설명 📝

입출력 예시 📌
코드 풀이 💡
def solution(a, b, n):
answer = 0
while (n >= a):
remain_bottle = n % a
n = (n//a) * b
answer += n
n += remain_bottle
return answer
🔍 코드 설명
n
개의 빈 병을 가지고 마트에 가서 a
개의 빈 병으로 b
개의 새 병을 교환할 때, 받을 수 있는 총 콜라의 수를 계산하는 함수입니다.
n
개의 빈 병을 가지고 교환을 시작합니다.
- 교환이 가능한 동안:
n // a
로 교환할 수 있는 콜라의 수를 계산하고, b
배 만큼 콜라를 받습니다.
- 받은 콜라의 수를
answer
에 추가합니다.
- 교환 후 남은 빈 병은
remain_bottle
로 저장하고, 다음 교환에 사용할 수 있도록 n
에 더합니다.
- 교환할 수 없을 때까지 반복하고, 총 받은 콜라의 수를 반환합니다.
다른 사람의 풀이 ✨
solution = lambda a, b, n: max(n - b, 0) // (a - b) * b
✅ 다른 풀이의 특징
max(n - b, 0)
: 처음에 가진 빈 병에서 한 번 교환했을 때 받을 수 있는 콜라의 수를 계산합니다.
(n - b) // (a - b)
: 빈 병이 a개에서 b개로 교환될 때마다 a - b만큼 실제로 교환이 가능하다는 점을 고려하여 교환 횟수를 계산합니다.
🔗 프로그래머스 문제 링크