728x90
반응형
치킨 쿠폰
문제설명 :
프로그래머스 치킨은 치킨을 시켜먹으면 한 마리당 쿠폰을 한 장 발급합니다. 쿠폰을 열 장 모으면 치킨을 한 마리 서비스로 받을 수 있고, 서비스 치킨에도 쿠폰이 발급됩니다. 시켜먹은 치킨의 수 chicken이 매개변수로 주어질 때 받을 수 있는 최대 서비스 치킨의 수를 return하도록 solution 함수를 완성해주세요.
제한 사항
- chicken은 정수입니다.
- 0 ≤ chicken ≤ 1,000,000
입출력 예
chicken | result |
100 | 11 |
1,081 | 120 |
첫번째 접근
: answer과 rest가 10보다 작아질 때 가지 while문을 돌려주었다. rest에는 나머지 값을 넣고, coupon에는 몫을 넣은 후 answer에 더해주었다. rest의 누적값이 10보다 크거나 같은 경우 coupon에 더해주었다. 하지만, 테스트 케이스 2번을 통과하지 못했다.
function solution(chicken) {
let answer = 0
let coupon = chicken
let rest = 0
while(coupon + rest > 10){
rest += coupon % 10
coupon = Math.trunc(coupon / 10)
answer += coupon
if(rest >= 10) coupon += rest
}
return answer
}
두번째 접근
: 문제가 뭘까? coupon이 10장이 되었을때, 다시 하나의 쿠폰을 받는다. 이때, rest와의 합산이 이루어 지지 않아 테스트 케이스의 답이 120이 아닌 119로 반환되었다. 반복문의 후반부에 coupon에 rest를 더해주었고 rest 값을 reset해 주었다. 문제가 해결되었다.
function solution(chicken) {
let answer = 0
let coupon = chicken
let rest = 0
while(coupon>= 10){
rest += coupon % 10
coupon = Math.trunc(coupon / 10)
answer += coupon
coupon = coupon + rest
rest = 0
}
return answer
}
solution
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;
}
// while문의 코드를 더 줄여쓸 수 있다.
728x90
반응형
'자료구조 및 알고리즘 > JavaScript Practice' 카테고리의 다른 글
JS Practice) 프로그래머스 : 특이한 정렬 (1) | 2023.04.12 |
---|---|
JS Practice) 프로그래머스 : 저주의 숫자 3 (0) | 2023.04.11 |
JS Practice) 프로그래머스 : 로그인 성공? (0) | 2023.04.07 |
JS Practice) 프로그래머스 : 직사각형 넓이 구하기 (0) | 2023.04.06 |
JS Practice) 프로그래머스 : 종이 자르기 (0) | 2023.04.05 |