Stay Hungry Stay Foolish

프로그래머스 코딩테스트/Level 1

[Programmers] L1. 콜라 문제 (Python)

dev스카이 2024. 11. 7. 16:12

[문제 링크] 👇

 

프로그래머스

SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr


풀이

아래의 표를 보면 몫과 나머지를 이용해 값을 구할 수 있다.

  빈 병 a 개 반납 b 병 계산 콜라 b 병 받기 보유 중인 빈 병 a 개
20 / 2 = 10 10 x 1 = 10 answer = 10 n = 10 + (20 % 2) = 10
10 / 2 = 5 5 x 1 = 5 answer = (10 + 5) = 15 n = 5 + (10 % 2) = 5
5 / 2 = 2 2 x 1 = 2 answer = (15 + 2) = 17 n = 2 + (5 % 2) = 3
3 / 2 = 1 1 x 1 = 1 answer = (17 + 1) = 18 n = 1 + (3 % 2) = 2
2 / 2 = 1 1 x 1 = 1 answer = (18 + 1) = 19 n = 1 + (2 % 2) = 1
n > a 이므로 루프 종료

 

보유 중인 빈 병이 a 개 미만이면 루프를 종료한다.

 

Solution

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

 


👩‍💻 회고

✅ 2024.11.09 재풀이