처음에는 남은 쿠폰을 따로 저장해서 쿠폰을 모두 사용했을 경우 남은 쿠폰을 따로 while문을 돌려서 나눠줬다. 이때 9번 케이스를 통과하지 못했음.. 치킨을 1999마리 시킨 경우인데,,, 222가 정답인데 221을 반환했다.
처음 풀이
n | 쿠폰 | 서비스 치킨 | 남은 쿠폰 | 총 남은 쿠폰 | 총 치킨 |
---|---|---|---|---|---|
1 | 1999 장 | 199 마리 | 9 장 | 9 장 | 199 마리 |
2 | 199 장 | 19 마리 | 9 장 | 18 장 | 218 마리 |
3 | 19 장 | 1 마리 | 9 장 | 27 장 | 219 마리 |
4 | 남은 쿠폰 27 장 | 2 마리 | 7 장 | 7 장 | 221 마리 |
이런식으로 남은 쿠폰을 모아서 한 번에 while로 돌려서 풀었다...... 근데 이게 아님!!
n | 쿠폰 | 서비스 치킨 | 남은 쿠폰 | 총 남은 쿠폰 | 총 치킨 |
---|---|---|---|---|---|
1 | 1999 장 | 199 마리 | 9 장 | 208 장 | 199 마리 |
2 | 208 장 | 20 마리 | 8 장 | 28 장 | 219 마리 |
3 | 28 장 | 2 마리 | 8 장 | 10 장 | 221 마리 |
4 | 10 장 | 1 마리 | 0 장 | 0 장 | 222 마리 |
이렇게 그때그때 남은 쿠폰을 합쳐서 풀어야 한다!......................
어쩐지.... while문 두 번 돌리는 거 엄청나게 마음에 안 들더라,,,,,,
암튼 해결!
이거 해결하고 못풀었던 콜라 문제도 풀었다! 예에에🥳
public class ChickenCoupon {
public int solution(int chicken) {
int coupon = chicken;
int count = 0;
while (coupon >= 10) {
int leftCoupon = coupon % 10;
count += coupon / 10;
coupon = leftCoupon + coupon / 10;
}
return count;
}
public static void main(String[] args) {
ChickenCoupon chickenCoupon = new ChickenCoupon();
System.out.println(chickenCoupon.solution(100)); // 11
System.out.println(chickenCoupon.solution(1081)); // 120
System.out.println(chickenCoupon.solution(1999)); // 222
}
}