[codeup] 2009 : 아메리카노

SUNGJIN KIM·2021년 11월 23일
0

CODEUP

목록 보기
9/76
post-thumbnail

문제

학교 앞 카페에서 아메리카노를 한 잔을 사면 쿠폰을 한 장 받을 수 있다.

이 쿠폰은 카페에서 요구하는 필요 개수(N)를 채우면 아메리카노 한잔으로 다시 교환 할 수 있다.

그런데 이 가게는 특이하게도 쿠폰을 모아 아메리카노로 교환할 때에도 쿠폰을 또 한 장 준다.

현재 영일이가 가진 쿠폰의 개수(K)와 카페에서 요구하는 필요 쿠폰 개수(N)가 입력되면, 최대한 먹을 수 있는 아메리카노의 개수를 계산하는 프로그램을 작성하시오.

입력

현재 영일이가 가진 쿠폰 개수(K)와 카페에서 요구하는 필요 쿠폰 개수(N)이 공백으로 구분되어 입력된다.

(1<= K <= 2,000), (1 < N < 1000)

입력 예시

10 3

출력

영일이가 먹을 수 있는 최대 아메리카노 개수를 출력한다.

출력 예시

4

문제 풀이

커피를 바꿔먹은 것에 대한 부분을 함수로 구현하였다.

처음 코드를 작성하기 전에는 아래와 같이 시뮬레이션을 돌려보았다.

  1. 내 쿠폰 개수 : N개 / 아메리카노 교환 필요 쿠폰 개수 : M개
  2. 교환 후 잔여 개수 : (M/N) + M

입력값 : 10 2
1) 내 쿠폰 개수 : 10개
2) 내가 마신 아메리카노 : 5잔
3) 잔여 쿠폰 : 5개
4) 내가 마실 수 있는 아메리카노 : 2잔
5) 잔여 쿠폰 : 1개(남은거) + 2개(마시면서 받은거) = 3개
6) 내가 마실 수 있는 아메리카노 : 1잔
7) 잔여 쿠폰 : 1개 + 1개(마시면서 받은거) = 2개
8) 내가 마실 수 있는 아메리카노 : 1잔
9) 잔여 쿠폰 : 1개

총합 : 5+2+1+1 = 9잔

어떤식으로 코드를 짜야할지 먼저 정해놓고, 그 다음에 이대로 코드를 작성하였다.
처음에는 tries로 아메리카노의 전체 개수를 구하려고했으나, 이대로 진행했을때는 코드가 계속 복잡해지는 것을 느껴서 값을 아예 따로 두었다.

계속 형변환에서 걸려서 모두 int로 변경하였으나, 이는 더 좋게 표현할 방법이 있으면 추후에 바꿔줄 예정이다.

my_coupon_cnt, need_coupon_cnt = input().split(' ')

def change_americano(my_coupon_cnt, need_coupon_cnt):
    tries,coffee = 0,0
    remaining_coupon = int(my_coupon_cnt)
    while int(remaining_coupon) >= int(need_coupon_cnt):
        tries = int(remaining_coupon)/int(need_coupon_cnt)
        coffee += int(tries)
        remaining_coupon = int(int(remaining_coupon)%int(need_coupon_cnt)) + int(tries)
    return coffee
    
print(change_americano(my_coupon_cnt,need_coupon_cnt))
profile
#QA #woonmong

0개의 댓글