코딩테스트/PYTHON

[프로그래머스][PYTHON] Lv. 1 콜라 문제

_알파카 2024. 8. 16. 14:08
728x90

문제 설명

https://school.programmers.co.kr/learn/courses/30/lessons/132267

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

풀이

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

 

1. n을 a로 나눠주면 남아있는 remain_bottle이 구해진다. 

2. (n//a) * b 를 해주면 마트에서 받은 콜라의 수가 나온다. 

3. 이 콜라의 수를 answer에 더해준다. 

4. 이 후 남아있는 병을 더해줘서 다음 while에 활용한다. 

 

 

++ 다시 풀어본 후기

def solution(a, b, n):
    answer = 0
    while n >= a:
        # 마트에 가져가고 남은 빈 병
        remain = n % a
        # 빈 병을 내서 새로 받은 콜라 개수
        new = (n // a) * b
        answer += new
        # 현재 병 개수는 남은 빈 병 + 새로 받은 콜라
        n = new + remain
    return answer
728x90