따끈따끈하게 새로 올라온 Lv.1 문제🥤
계산식만 구해서 코드로 작성하면 되는.. 크게 어렵지 않은 문제이다.
콜라를 받기 위해 마트에 주어야 하는 병 수
a
, 빈 병a
개를 가져다 주면 마트가 주는 콜라 병 수b
, 상빈이가 가지고 있는 빈 병의 개수n
이 매개변수로 주어집니다. 상빈이가 받을 수 있는 콜라의 병 수를 return 하도록 solution 함수를 작성해주세요.
def solution(a, b, n):
answer = 0
# 단, 보유 중인 빈 병이 2개 미만이면, 콜라를 받을 수 없다.
# 빈 병의 개수가 콜라를 받기 위해서 필요한 개수보다 크면 반복한다
while (n >= a):
remain_bottle = n % a
n = (n//a) * b # 마트에서 받은 콜라의 수
answer += n # 받은 걸 answer에 +
n += remain_bottle # 남아있는 병을 더해줘서 다음에 마트갈 때 이용
return answer
n
을 a
로 나눠주면 바꿔먹지 않은, 남아있는 remain_bottle
이 나온다.(n//a) * b
를 해주면 마트에서 받은 콜라의 수가 나온다.answer
에 더해준다.보유중인 빈 병의 개수가 콜라를 받기 위해서 필요한 개수보다 커야지만 교환이 가능하기 때문에 반복문 조건도 쉽게 설정해줄 수 있었다.
solution = lambda a, b, n: max(n - b, 0) // (a - b) * b
wtf..
혹시 다른 사람의 풀이 이해하셨나요 ?