Programmers js - 콜라문제

박요셉·2024년 5월 28일
1

Programmers.Js

목록 보기
17/26
post-custom-banner

재귀 함수를 연습할 수 있을만한 문제라 생각해서 열심히 생각해내서 짜냈음.

const exchangeCoke = (needCoke, exchangeCoke, myEmptyCoke) => {
    const exchangedCoke = Math.floor(myEmptyCoke / needCoke) * exchangeCoke;
    const leftoverCoke = myEmptyCoke % needCoke + exchangedCoke;
    return [exchangedCoke, leftoverCoke];
}

function solution(a, b, n) {
    let answer = 0;
    let currentEmptyCoke = n;

    while (currentEmptyCoke >= a) {
        const [exchangedCoke, leftoverCoke] = exchangeCoke(a, b, currentEmptyCoke);
        answer += exchangedCoke;
        currentEmptyCoke = leftoverCoke;
    }

    return answer;
}

본인은 굉장히 잘 짯고만!! 하는 감상을 가지고 재출하고 다른 사람 코드를 보러 갔는데...

solution = (a, b, n) => Math.floor(Math.max(n - b, 0) / (a - b)) * b

???? ㅋㅋㅋ 어이없음

재귀를 쓰지 않았다면 나도 아래랑 비슷하게 풀게됬을 듯. 쨋든 재밌었다.

function solution(a, b, n) {
    let answer = 0;
    while (n >= a) {
        answer += parseInt(n / a) * b;
        n = parseInt(n / a) * b + n % a;
    }
    return answer;
}
profile
개발자 지망생
post-custom-banner

1개의 댓글

comment-user-thumbnail
2024년 5월 28일

늘 도전하는 모습 짱짱! 참개발자!

답글 달기