[프로그래머스] Lv.1 콜라 문제 (Python)

seulzzang·2022년 10월 24일
1

코딩테스트 연습

목록 보기
33/44
post-thumbnail

따끈따끈하게 새로 올라온 Lv.1 문제🥤


📍 문제

[프로그래머스] 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
  • na로 나눠주면 바꿔먹지 않은, 남아있는 remain_bottle이 나온다.
  • (n//a) * b를 해주면 마트에서 받은 콜라의 수가 나온다.
  • 이렇게 받은 콜라의 수를 answer에 더해준다.
  • 이후 남아있는 병을 더해줘서 다음에 마트갈 때 이용하면 된다!

보유중인 빈 병의 개수가 콜라를 받기 위해서 필요한 개수보다 커야지만 교환이 가능하기 때문에 반복문 조건도 쉽게 설정해줄 수 있었다.

📍 다른사람 풀이

solution = lambda a, b, n: max(n - b, 0) // (a - b) * b

wtf..

profile
중요한 것은 꺾이지 않는 마음

1개의 댓글

comment-user-thumbnail
2023년 1월 5일

혹시 다른 사람의 풀이 이해하셨나요 ?

답글 달기