본문 바로가기
Web Frontend/JavaScript

[ JavaScript ] 프로그래머스 치킨쿠폰

by quessr 2023. 1. 4.

문제 설명

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

 

문제 해설

몫과 나머지를 이용한 문제이다.

1. coupon / 10 => 몫1 + 나머지1
2. (몫1 + 나머지1) / 10 => 몫2 + 나머지2
3. if ( 몫 + 나머지 <  10 ) 까지 계속해서 10으로 나누어준 몫과 나머지를 구한다.
4. 몫 + 나머지의 값이 10보다 작아지는 경우 return 몫1 + 몫2 ....(몫들의 합을 리턴 해 준다.)

 

위의 설명을 문제의 입출력 예시에 맞게 다시 정리 하자면,

 

입출력 예시

 

chicken result
1,081 120



서비스 치킨(쿠폰의 수): 108 
남은 쿠폰의 수: 1
총 쿠폰의 수: 109

서비스 치킨(쿠폰의 수): 10
남은 쿠폰의 수: 9
총 쿠폰의 수: 19

서비스 치킨(쿠폰의 수): 1
남은 쿠폰의 수: 9
총 쿠폰의 수: 10

서비스 치킨(쿠폰의 수): 1
남은 쿠폰의 수: 0
총 쿠폰의 수: 1

최대 서비스 치킨의 수: 108 + 10 + 1 + 1 = 120

 

RunJS를 통해 값을 출력 해 본 모습

정리

치킨을 시켜먹은 경우, 쿠폰이 발급 되므로

처음 쿠폰의 수를 치킨의 수로 할당 한 후

 

치킨을 시켜먹고 받은 쿠폰의 수 + 남은 쿠폰의 수를 다시 쿠폰에 할당을 함으로써 

더이상 10으로 나누어 떨어지지 않을 때 까지 계산함을 통해 총 서비스 치킨의 수를 도출 할 수 있다.

 

위의 경우, 반복 횟수를 알 수 없으므로 for나 forEach를 사용하지 않고 while을 사용 하였다.

 

 


https://school.programmers.co.kr/learn/courses/30/lessons/120884