• Feed
  • Explore
  • Ranking
/
/
    코딩 테스트 풀이

    [백준] 5032 탄산음료

    Python
    J
    J. Hwang
    2025.06.10
    ·
    4 min read

    문제

    준민이는 탄산 음료를 좋아한다. 탄산 음료를 사느라 돈을 다 써버렸기 때문에, 이제 준민이는 가진 돈이 없어 탄산 음료를 사먹을 수 없다.

    준민이는 항상 법을 지키며 사는 사람이기 때문에, 아무리 탄산 음료가 먹고 싶어도 훔치지 않는다. 따라서, 법적으로 문제가 없는 방법으로 탄산 음료를 구매할 것이다.

    마침 빈 병을 특정 개수만큼 가져가면, 새 병으로 바꾸어주는 이벤트가 진행중이다. 준민이는 길에서 빈 병을 열심히 찾은 뒤, 탄산 음료를 먹으려고 한다.

    준민이가 현재 가지고 있는 빈 병의 수와 길에서 발견한 빈 병의 수, 새 병으로 바꾸는데 필요한 빈 병의 수가 주어졌을 때, 준민이가 탄산 음료를 몇 개 먹을 수 있는지 구하는 프로그램을 작성하시오.


    입력

    첫째 줄에 준민이가 가지고 있는 빈 병의 수 e, 그날 발견한 빈 병의 수 f, 새 병으로 바꾸는데 필요한 빈 병의 개수 c가 주어진다. (e < 1000, f < 1000, 1 < c < 2000) e, f, c는 모두 음이 아닌 정수이다.


    출력

    첫째 줄에 준민이가 탄산 음료를 몇 개나 먹을 수 있는지를 출력한다.


    내 풀이

    e, f, c = map(int, input().split())
    
    answer = 0
    empty = e+f
    while empty >= c:
        new = empty//c
        answer += new
        empty -= new*c
        empty += new
    
    print(answer)

    코멘트

    브론즈인데 꼬아서 생각해서 그런지 생각보다 어려운 문제였다. 빈 병을 모아 새 음료수를 받아 마시면 그것이 또 빈 병이 되어서 새 음료수를 받을 수 있다는 것에 주목하면 풀 수 있는 문제이다. 그래서 빈 병의 개수가 새 병으로 바꾸는데 필요한 빈 병의 수 (c)보다 작을 때까지 반복할 수 있으므로 while empty >= c를 하면 된다. 그리고 정답과 빈 병의 개수를 정의하고 새로 받은 음료수의 개수를 정답 변수에 더하고 빈 병의 개수 변수에 사용한 빈 병의 개수를 빼고 새롭게 생긴 병의 개수를 더하는 방식으로 반복문을 돌리면 된다.


    References

    https://www.acmicpc.net/problem/5032







    - 컬렉션 아티클