콜라 문제, Javascript

cptkuk91·2023년 2월 27일
1

Algorithm

목록 보기
148/161

문제

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

코드

function solution(a, b, n) {
    let result = 0;
    
    while(n >= a){
        result += Math.floor(n / a) * b;
        n = Math.floor(n / a) * b + n % a;
    }
    
    return result;
}

풀이

우선 문제 요구사항에 맞춰, 콜라를 몇개 받을 수 있는지 구하기 위해 result를 선언합니다. 콜라를 최대한 바꿀 수 있는만큼 바꿔야하기 때문에, n이 a개보다 클때까지 반복문을 돌려줍니다. 콜라를 받아오는 갯수를 Math.floor(n/a) b로 만들어줍니다. a는 3, b는 1, n은 20개라고 가정했을 때, 콜라 20개를 가져가면, Math.floor(20/3)통해 6 b만큼 받을 수 있습니다. 만약 b가 2라면? 6 b 12개를 받아올 수 있겠죠? 이후 n값을 반납했으니까 줄여줘야합니다. Math.floor(n / a) b + n % a를 합니다. n % a를 하는 이유를 생각해야합니다. 보면 Math.floor(20 / 3)하면 2개가 남습니다. 남은 콜라는 계속 가지고 있어야하기 때문에 n값에 n % a 남은 콜라를 더해주면서 while문이 끝날 때 까지 계속 반복시켜줍니다.

profile
메일은 매일 확인하고 있습니다. 궁금하신 부분이나 틀린 부분에 대한 지적사항이 있으시다면 언제든 편하게 연락 부탁드려요 :)

0개의 댓글