프로그래머스/파이썬

콜라 문제

싱싱한복초이 2025. 1. 25. 10:05

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

 

프로그래머스

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

programmers.co.kr

[문제 설명]

~생략~

빈 병 a개를 가져다주면 콜라 b병을 주는 마트가 있을 때, 빈 병 n개를 가져다주면 몇 병을 받을 수 있는지 계산하는 문제입니다. 기존 콜라 문제와 마찬가지로, 보유 중인 빈 병이 a개 미만이면, 추가적으로 빈 병을 받을 순 없습니다. 상빈이는 열심히 고심했지만, 일반화된 콜라 문제의 답을 찾을 수 없었습니다. 상빈이를 도와, 일반화된 콜라 문제를 해결하는 프로그램을 만들어 주세요.

콜라를 받기 위해 마트에 주어야 하는 병 수 a, 빈 병 a개를 가져다 주면 마트가 주는 콜라 병 수 b, 상빈이가 가지고 있는 빈 병의 개수 n이 매개변수로 주어집니다. 상빈이가 받을 수 있는 콜라의 병 수를 return 하도록 solution 함수를 작성해주세요.

 

제한사항

  • 1 ≤ b < a  n ≤ 1,000,000
  • 정답은 항상 int 범위를 넘지 않게 주어집니다.

[나의 풀이]

def solution(a, b, n):
    service = 0 
    cola = n     
    
    while cola >= a:
        cc = cola // a
        received = cc * b
        service += received # 총 받은 콜라 병 수를 누적
        cola = cola % a + received # 남은 병 수 계산
        
    return service

 

*유사문제*

https://todareistodoletsgobokchoy.tistory.com/239

 

치킨 쿠폰

https://school.programmers.co.kr/learn/courses/30/lessons/120884 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr[문제 설명]프로그래머

todareistodoletsgobokchoy.tistory.com

 

[다른 풀이]

import math
def solution(give, take, init):
    return math.ceil((init - give + 1) / (give - take)) * take

설명

https://blog.naver.com/doctorgu/222992407249

 

프로그래머스 콜라 문제 한줄 코딩 설명

https://school.programmers.co.kr/learn/courses/30/lessons/132267 대부분은 하나씩 빼가며 씀. 그런데 ...

blog.naver.com

 

'프로그래머스 > 파이썬' 카테고리의 다른 글

폰켓몬_알고리즘(해시)  (0) 2025.01.27
두 개 뽑아서 더하기  (0) 2025.01.26
푸드 파이트 대회  (1) 2025.01.24
명예의 전당 (1)  (0) 2025.01.23
카드 뭉치  (1) 2025.01.22