본문 바로가기
프론트엔드로 가는 길/프로그래머스

42. 치킨 쿠폰

by woody-j 2023. 4. 17.

https://school.programmers.co.kr/learn/courses/30/lessons/120884
[ 문제 설명 ]

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

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

 

[ 문제 풀이 ]

function solution(chicken) {
  let remainCoupon = chicken;
  let chickenCount = 0;
  while (remainCoupon > 9) {
    const coupon = Math.floor(remainCoupon / 10);
    chickenCount += coupon;
    remainCoupon = (remainCoupon % 10) + coupon;
  }
  return chickenCount;
}

 

1. let remainCoupon = chicken; : 매개변수로 주어진 chicken 값을 remainCoupon 변수에 할당합니다.

2. let chickenCount = 0; : 치킨 서비스를 받을 수 있는 최대 횟수를 저장할 변수 chickenCount를 0으로 초기화합니다. 

 

3. while (remainCoupon > 9) { ... } : remainCoupon 값이 10 이상인 동안에만 반복합니다.

4. const coupon = Math.floor(remainCoupon / 10); : remainCoupon 값을 10으로 나눈 몫을 계산하여 coupon 변수에 할당합니다. 이 값은 현재 남은 쿠폰 중 10장을 교환할 수 있는 쿠폰의 수입니다.

5. chickenCount += coupon; : coupon 변수에 저장된 값을 chickenCount에 더합니다. 이는 쿠폰 10장을 교환할 수 있을 때마다 치킨 서비스를 받을 수 있기 때문입니다.

6. remainCoupon = (remainCoupon % 10) + coupon; : remainCoupon 값에서 10으로 나눈 나머지와 coupon 값을 더한 값을 remainCoupon 변수에 할당합니다. 이 값은 쿠폰 10장을 교환하고 남은 쿠폰의 수입니다.

 

7. return chickenCount; :  최대 치킨 서비스 횟수를 저장하고 있는 chickenCount 변수의 값을 반환합니다.