#TIL 7일차([프로그래머스] Lv.1 콜라 문제)

앙꼬·2024년 4월 26일

부트캠프

목록 보기
7/59


📍 문제

[프로그래머스] Lv.1 콜라 문제

📍 풀이

function solution(a, b, n) {
    var answer = 0;
    while(n >= a){
        answer +=  Math.floor(n/a)*b
        n = Math.floor(n / a) * b + (n % a)
    }
    return answer;
}
변수설명
a새로운 병 하나를 받기 위해 필요한 빈 병의 수
b새로운 병 하나를 받으면 추가로 받는 병의 수
n현재 가지고 있는 빈 병의 수
  • while(n >= a): n이 a보다 크거나 같을 때까지 반복 즉, 더 이상 병을 교환할 수 없을 때까지 반복

  • Math.floor(n/a) * b: 현재 가지고 있는 빈 병 n을 a로 나눈 몫을 계산하여, 새로운 병을 받을 수 있는 수량을 계산. 이때, 받은 병의 수를 b와 곱하여 더 많은 병을 받게 됨

  • answer += Math.floor(n/a)*b: 위에서 계산한 새로운 병의 수를 answer에 누적

  • n = Math.floor(n / a) * b + (n % a): 새로운 병을 받은 후 남은 빈 병의 수를 업데이트함 (n % a)는 교환 후 남는 빈 병의 수를 의미 즉, 새로 받은 병과 남은 병의 수를 합쳐서 n을 업데이트

📍 다른 사람 풀이

solution = (a, b, n) => Math.floor(Math.max(n - b, 0) / (a - b)) * b
profile
프론트 개발자 꿈꾸는 중

0개의 댓글