치킨을 한 마리 시킬 때마다 쿠폰 한 장을 준다. 쿠폰 10장을 모으면 치킨 한 마리를 서비스로 받을 수 있다.
중요한 점은, 서비스로 받은 치킨도 쿠폰을 제공한다는 것이다. 이 규칙을 이용해 받을 수 있는 최대 서비스 치킨 수를 구하는 문제다
문제를 처음 봤을 땐 간단하게 치킨을 시키면서 받은 쿠폰으로 서비스 치킨을 받을 수 있겠다고 생각했다.
chicken / 10만 하면 될 줄 알았는데, 서비스 치킨에도 쿠폰이 있다는 점을 빼먹고 그 부분을 제대로 계산하지 않아서 여러 번 틀렸다.
그때는 변수 위치를 잘못 잡아서 반복문 바깥에서 쿠폰을 계속 업데이트하려 했고, 이 부분이 문제가 됐다.
결국 chicken + coupon을 잘 계산해서 조건문 안에서 값을 제대로 갱신할 수 있게 수정했다.
class Solution {
public int solution(int chicken) {
int service = 0, coupon = 0;
while (chicken + coupon >= 10) {
int totalCoupons = chicken + coupon;
service += totalCoupons / 10;
coupon = totalCoupons % 10;
chicken = totalCoupons / 10;
}
return service;
}
}
돌아보며..
처음에는 너무 단순하게 생각하고 문제를 풀었기 때문에, 서비스 치킨도 쿠폰을 받는다는 점을 간과했다.
반복문 바깥에서 쿠폰을 갱신하려다 보니 문제가 생겼고, 이를 잘못 계산했던 게 한참 걸렸던 이유였다.
이제는 이런 실수를 줄이기 위해 조건을 좀 더 꼼꼼히 체크해야겠다고 생각했다.
단순한 실수라도 반복문이나 조건문에서 제대로 갱신되는지 다시 한번 점검하는 습관을 들여야겠다.
댓글
댓글 작성은 로그인 후에 가능합니다.