Kotlin/코딩테스트

[프로그래머스] 할인 행사 - kotlin

깨노비 2023. 4. 14. 00:03
728x90
반응형

XYZ 마트는 일정한 금액을 지불하면 10일 동안 회원 자격을 부여합니다. XYZ 마트에서는 회원을 대상으로 매일 한 가지 제품을 할인하는 행사를 합니다. 할인하는 제품은 하루에 하나씩만 구매할 수 있습니다. 알뜰한 정현이는 자신이 원하는 제품과 수량이 할인하는 날짜와 10일 연속으로 일치할 경우에 맞춰서 회원가입을 하려 합니다.

class Solution {
    fun solution(want: Array<String>, number: IntArray, discount: Array<String>): Int {
        var answer: Int = 0
        val numberArr = number.copyOf()
        val wantMap = mutableMapOf<String, Int>()

        for ((i, item) in want.withIndex()) {
            wantMap[item] = i
        }

        for ((i, item) in discount.withIndex()) {
            if (i >= 10) {
                val minusItem = discount[i - 10]
                val idx = wantMap[minusItem]
                if (idx != null) numberArr[idx]++
            }

            val idx = wantMap[item] ?: continue
            numberArr[idx]--

            if (numberArr.filter { it > 0 }.isEmpty()) answer++
        }

        return answer
    }
}
728x90
반응형