문제 설명
프로그래머스 치킨은 치킨을 시켜먹으면 한 마리당 쿠폰을 한 장 발급합니다. 쿠폰을 열 장 모으면 치킨을 한 마리 서비스로 받을 수 있고, 서비스 치킨에도 쿠폰이 발급됩니다. 시켜먹은 치킨의 수 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

정리
치킨을 시켜먹은 경우, 쿠폰이 발급 되므로
처음 쿠폰의 수를 치킨의 수로 할당 한 후
치킨을 시켜먹고 받은 쿠폰의 수 + 남은 쿠폰의 수를 다시 쿠폰에 할당을 함으로써
더이상 10으로 나누어 떨어지지 않을 때 까지 계산함을 통해 총 서비스 치킨의 수를 도출 할 수 있다.
위의 경우, 반복 횟수를 알 수 없으므로 for나 forEach를 사용하지 않고 while을 사용 하였다.
https://school.programmers.co.kr/learn/courses/30/lessons/120884
'Web Frontend > JavaScript' 카테고리의 다른 글
[ JavaScript ] 클로저: 캡슐화 예시를 통해 클로저 개념 쉽게 이해해보기 (0) | 2023.05.24 |
---|---|
[ JavaScript ] 호이스팅: 변수와 함수의 동작 방식 및 결과의 차이점 비교 (0) | 2023.05.22 |
[ JavaScript ] var와 let의 유효범위 및 스코프 동작의 차이 (0) | 2023.05.21 |
[ JavaScript ] 자바스크립트의 핵심: 스코프와 렉시컬 스코프 완벽 이해하기 (0) | 2023.05.19 |
[ JavaScript ] Nullish 병합 연산자 '??' (0) | 2022.12.03 |