Link
초보 개발자의 성장 일기
치킨 쿠폰 본문
문제 설명
프로그래머스 치킨은 치킨을 시켜먹으면 한 마리당 쿠폰을 한 장 발급합니다. 쿠폰을 열 장 모으면 치킨을 한 마리 서비스로 받을 수 있고, 서비스 치킨에도 쿠폰이 발급됩니다. 시켜먹은 치킨의 수 chicken이 매개변수로 주어질 때 받을 수 있는 최대 서비스 치킨의 수를 return하도록 solution 함수를 완성해주세요.
나의 문제 해결 방법
처음에 시킨 치킨의수를 10으로 나누고 내림을 하면 서비스로 받을 수 있는 치킨의 수가 된다. 서비스로 받은 치킨의 수가 10보다 크거나 같은 조건을 만족하면 10으로 나눠서 내림 후에 앞서 받았던 서비스 치킨의 수와 더한다. 10보다 작을때까지 반복한다.
function solution(chicken) {
let getChicken = Math.floor(chicken/10);
while( getChicken >= 10) {
getChicken += Math.floor(getChicken/10)
}
return getChicken
}
이렇게 했더니 통과를 몇개 하긴 했지만 시간 초과로 실패했다. 무한루프에 빠진듯 하다.
function solution(chicken) {
let coupon = chicken;
let service = 0;
while(coupon > 9) {
service += Math.floor(coupon / 10);
coupon = Math.floor((coupon / 10) + ( coupon % 10));
}
return service;
}
서비스치킨의 수와 쿠폰의 수를 따로 변수로 정해주었다. 그리고 10개로 나눴을때 남은 10개 미만의 쿠폰의 수도 더해주는 로직을 추가하였다.
'Development > Algorithm' 카테고리의 다른 글
특이한 정렬, 매개변수와 가까운 순서대로 정렬 (0) | 2023.11.22 |
---|---|
유한소수 판별하기 (0) | 2023.11.21 |
등수 매기기, 배열 변경 없이 sort()로 배열 정렬 (1) | 2023.11.20 |
추억점수, reduce (0) | 2023.11.18 |
달리기 경주, Hash 자료구조 (0) | 2023.11.18 |