기록

[Kotlin] 할인 행사 본문

[Study]/Kotlin

[Kotlin] 할인 행사

Dannnnnn 2023. 5. 5. 19:22
반응형
fun main() {
    val s = Solution()

//    println(s.solution(arrayOf("banana", "apple", "rice", "pork", "pot"), intArrayOf(3,2,2,1,1),
//        arrayOf("chicken", "apple", "apple", "banana", "rice", "apple", "pork", "banana", "pork", "rice", "pot", "banana", "apple", "banana")
//    ))

    println(s.solution(arrayOf("apple"), intArrayOf(10),
        arrayOf("banana", "banana", "banana", "banana", "banana", "banana", "banana", "banana", "banana", "banana")
    ))
}

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

        for(i in 0..discount.size - 10) {
            var flag = true
            for(k in want.indices) {
                wantMap[want[k]] = number[k]
            }
            for(j in 0..9) {
                if (wantMap.containsKey(discount[i + j]))
                    wantMap[discount[i + j]] = wantMap[discount[i + j]]!! - 1
            }
            for(w in wantMap) {
                if(w.value > 0) {
                    flag = false
                    break
                }
            }
            if(flag) answer++
        }

        return answer
    }
}

for(i in discount.indices - 10) 와 같은 문법은 없으니 조심하자. (-10 연산이 무시됨)

해당 라인만 size에서 -10을 빼는 걸로 바꿔주니 해결 되었다.

 

2번째 for문을 for(j in i..i+9)로 하고 discount에 접근하는 인덱스를 [i+j]가 아닌 [j]로 한다면 더 가독성 좋은 코드가 될 것 같다.

반응형