Lv.0 - 치킨 쿠폰_01.08

송철진·2023년 1월 8일
0

문제 설명

프로그래머스 치킨은 치킨을 시켜먹으면 한 마리당 쿠폰을 한 장 발급합니다. 쿠폰을 열 장 모으면 치킨을 한 마리 서비스로 받을 수 있고, 서비스 치킨에도 쿠폰이 발급됩니다. 시켜먹은 치킨의 수 chicken이 매개변수로 주어질 때 받을 수 있는 최대 서비스 치킨의 수를 return하도록 solution 함수를 완성해주세요.

제한사항
chicken은 정수입니다.
0 ≤ chicken ≤ 1,000,000

입출력 예

chickenresult
10011
1,081120

나의 코드

function solution(chicken) {
    return chicken === 0 ? 0 : Math.floor((chicken-1)/9)
}

풀이

치킨 수에 따른 서비스 치킨 수를 하나씩 나열하다보니 일정한 규칙이 있다는 것을 발견했다

치킨 수서비스 치킨 수
1~90
10~181
19~272
28~363
......
1072~1080119
1081~1089120

즉, (치킨 수-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

profile
검색하고 기록하며 학습하는 백엔드 개발자

0개의 댓글