프로그래머스 치킨은 치킨을 시켜먹으면 한 마리당 쿠폰을 한 장 발급합니다. 쿠폰을 열 장 모으면 치킨을 한 마리 서비스로 받을 수 있고, 서비스 치킨에도 쿠폰이 발급됩니다. 시켜먹은 치킨의 수 chicken이 매개변수로 주어질 때 받을 수 있는 최대 서비스 치킨의 수를 return하도록 solution 함수를 완성해주세요.
제한사항
chicken은 정수입니다.
0 ≤ chicken ≤ 1,000,000
입출력 예
chicken | result |
---|---|
100 | 11 |
1,081 | 120 |
function solution(chicken) {
return chicken === 0 ? 0 : Math.floor((chicken-1)/9)
}
치킨 수에 따른 서비스 치킨 수를 하나씩 나열하다보니 일정한 규칙이 있다는 것을 발견했다
치킨 수 | 서비스 치킨 수 |
---|---|
1~9 | 0 |
10~18 | 1 |
19~27 | 2 |
28~36 | 3 |
... | ... |
1072~1080 | 119 |
1081~1089 | 120 |
즉, (치킨 수-1)
에 9를 나눈 몫이 서비스 치킨 수이다.
근데 출제자의 의도는 이렇게 풀라는 게 아니었을 것이다..
처음엔 의도대로 풀려고 했다.. 근데 테스트 코드에서 20점을 맞았다
서비스 치킨 주문 시 받는 쿠폰 수를 고려하지 않았기 때문!
function solution(chicken) {
let service = chicken%10
while(chicken>=10){
chicken = Math.floor(chicken/10)
service += chicken
}
return service
}
function solution(chicken) {
let answer = 0;
let coupon = chicken
while(coupon >= 10){
answer += parseInt(coupon/10)
coupon = parseInt(coupon/10)+ coupon%10
}
return answer;
}
parseInt()
문자열 인자를 파싱하여 특정 진수(수의 진법 체계에서 기준이 되는 값)의 정수를 반환
https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/parseInt