학습(0)/C++ 문제풀이

치킨 쿠폰

누가 뭐래도 개발자 2025. 3. 18. 00:02

쿠폰 10개로 치킨을 한마리 교환할 수 있고, 교환한 치킨에는 또 쿠폰이 있다.

총 몇마리의 치킨을 서비스 받을 수 있는가?

 

단순하게 생각했는데 뭐가 문제인지 모르겠다.

 

#include <string>
#include <vector>

using namespace std;

int solution(int chicken) {
    int answer    = chicken / 10;
    int coupon    = chicken / 10;
    int remainder = coupon % 10;

    while (10 <= coupon + remainder)
    {
        answer    += (coupon + remainder) / 10;
        remainder += (coupon + remainder) % 10; //교환하고 남은 쿠폰.
        coupon     = (coupon + remainder) / 10; //쿠폰으로 교환한 치킨의 쿠폰.
    }

    return answer;
}

 

반례가 1999 ->222라고 한다.

반례를 어떻게 생각하냐는 질문의 답

사고력이 부족해도 될 때까지 노력하면 된다.

 

 

아니 근데 나는 222 잘 나오는데 뭐가 문제냐.

 

아.. 19 넣어보고 알았다.

remainder 초기값이 chicken이 아닌 coupon으로 되어 있는 게 문제였다.

 

이렇게 간단한 코드인데.. 너무 꼬았다.

nt solution(int chicken) {
    int ans=0;
    while(chicken>=10){
        chicken-=10;
        ans++;
        chicken++;
    }
    return ans;
}
int solution(int chicken) {
    int answer = 0;

    while(chicken >= 10)
    {
        answer += chicken/10;
        chicken = chicken/10 + chicken%10;
    }

    return answer;
}

'학습(0) > C++ 문제풀이' 카테고리의 다른 글

옹알이1  (0) 2025.03.18
등수 매기  (0) 2025.03.18
v평행  (0) 2025.03.17
저주의 숫자 3  (0) 2025.03.17
이진수 더하기  (0) 2025.03.17