기록
[Kotlin] 할인 행사 본문
반응형
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]로 한다면 더 가독성 좋은 코드가 될 것 같다.
반응형
'[Study] > Kotlin' 카테고리의 다른 글
Kotlin 커스텀 getter setter 완벽 정리 (0) | 2024.04.14 |
---|---|
Junit assertEquals 메소드 톺아보기 (0) | 2023.04.21 |
Kotlin Map, Filter 예제 (0) | 2022.06.22 |
안드로이드 코딩하며 익히는 코틀린 문법 (생성자 문법, 제너릭) (0) | 2022.06.15 |
[코틀린/Kotlin] 코루틴을 통한 비동기 처리 (0) | 2022.05.11 |