본문 바로가기
기초다지기/JS 코딩테스트

javaScript 치킨 쿠폰

by 김빵그 2023. 11. 3.

문제 

치킨 한마리당 쿠폰 한장을 발급한다. 쿠폰이 열장이 되면 치킨 한마리를 서비스로 받고 서비스 치킨에도 쿠폰이 발급된다. 시켜먹은 치킨의 수가 변수로 주어질 때 받을 수 있는 최대 서비스 치킨의 수를 리턴

나의 풀이 

function solution(chicken) {
    var totalChickens = chicken; // 총 주문한 치킨 수
    var coupons = 0; // 현재 보유한 쿠폰 수
    var serviceChickens = 0; // 받은 서비스 치킨 수
    
    
    while (totalChickens > 0) {
        // 치킨 주문
        totalChickens--;
        // 쿠폰 발급
        coupons++;
        // 10장의 쿠폰이 모일 때 서비스 치킨 발급
        if (coupons >= 10) {
            serviceChickens++;
            coupons -= 10;
            coupons++; // 서비스 치킨을 주문할 때 추가 쿠폰 발급
        }
    }
    return serviceChickens;
}
  • total / coupons / service 각 변수를 초기화 한다
  • while 루프는 사용하여 치킨 주문과 쿠폰 발급을 처리 
    • 주문한 치킨수를 1 감소/ 쿠폰 수를 1 증가 
    • 현재 가지고 있는 쿠폰의 수가 10장 이상이라면 서비스 치킨 1 증가 쿠폰 -10 추가쿠폰 1을 증가시킨다

다른 풀이

function solution(chicken) {
    var answer = parseInt((chicken-1) / 9);
    return answer;
}
  • ?....
function solution(chicken) {
    let answer = 0;
    let coupon = chicken

    while(coupon >= 10){
        answer = answer + parseInt(coupon/10)
        coupon = parseInt(coupon/10)+ coupon%10
    }

    return answer;
}
  • coupon 변수에 치킨 값을 할당한다
  • while 문을 사용 
    • coupon값이 10 이상인 동안만 실행 
    • answer에 현재 coupon 값을 10 나눈 몫을 더한다 = 현재 가지고 있는 쿠폰 수를 서비스 치킨으로 환산
    • coupon 값을 10으로 나눈 몫과 나머지를 더해 coupon 값을 갱신한다