프로그래머스 - 콜라(Kotlin)

황인규·2022년 10월 24일
0

알고리즘

목록 보기
3/3

문제 링크

[문제]
n개의 빈 콜라병을 가지고 있을 때, 누적합으로 몇개의 병을 받을 수 있나

[접근 방법]
그냥 문제 조건대로 구현한다.
풀이는 단순한 반복문과 재귀를 이용한 두 가지 방식으로 풀어봤다.

[반복문 코드]

class Solution {
    fun solution(a: Int, b: Int, n: Int): Int {
        var answer = 0
        var cntOfEmptyBottle = n
        
        while (cntOfEmptyBottle / a != 0) {
            val cntOfGivenBottle = (cntOfEmptyBottle / a) * b
            answer += cntOfGivenBottle
            cntOfEmptyBottle = cntOfGivenBottle + (cntOfEmptyBottle % a)
        }
        
        return answer
    }
}

[재귀 코드]

class Solution {
    fun solution(a: Int, b: Int, n: Int): Int {
        return recursion(a, b, n)
    }
    
    private fun recursion(a: Int, b: Int, n: Int): Int {
        if (n / a == 0) return 0
        return (n / a) * b + recursion(a, b, (n / a) * b + (n % a))
    }
}

0개의 댓글