알고리즘 공부/CodeUp 문제풀이

코드업 2009:아메리카노(C)

티들 2023. 10. 12. 23:15

문제 설명

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

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

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

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

 

입력

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

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

 

출력

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

 

입력 예시

10 3

 

출력 예시

4

 

나의 코드

#include <stdio.h>

int main()
{
    int a, b;	// 변수 선언
    int temp=0;
    scanf("%d %d", &a, &b);	// 입력받음
    while(a>=b)	// a가 b보다 크거나 같으면 반복
    {
        temp +=1;	// 커피 추가
        a -= b - 1;	// 쿠폰 계산
    }
    printf("%d", temp);	// 출력
    return 0;
}

 

모범 답안

#include <stdio.h>
 
int main()
{
    int me, need, remain, cnt = 0;
 
    scanf("%d %d", &me, &need);
     
    cnt = me / need;
    remain = me % need + cnt;
 
    while ( remain >= need )
    {
        cnt += remain / need;
        remain = remain % need + remain / need;
    }

    printf("%d", cnt);
    return 0;
}

 

문제 바로가기:https://codeup.kr/problem.php?id=2009&rid=0