쿠폰 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;
}