문제 풀이 코드
fun solution(want: Array<String>, number: IntArray, discount: Array<String>): Int {
var answer: Int = 0
// 원하는 물품 수량을 Map으로 만듦
val wantMap = mutableMapOf<String, Int>()
for (i in want.indices) {
wantMap[want[i]] = number[i]
}
// 할인 기간이 10일이므로, 10일마다 체크 -> 예를 들어 discount.size가 15일 경우, 10씩 한칸씩 이동하면서 6번 검사를 할 수 있게됨
for (i in 0..discount.size-10){
// 10일 간의 할인 목록을 자름
val sublist = discount.slice(i until i + 10)
// 현재 10일 동안의 아이템 수량을 카운트
val discountMap = sublist.groupingBy { it }.eachCount()
// 원하는 모든 물품이 수량만큼 있는지 확인
if (wantMap.all { (key, value) -> discountMap.getOrDefault(key, 0) >= value }) {
answer++
}
}
return answer
}
groupingBy 함수를 잘 몰라서 참고했습니다!
https://1chanhue1.tistory.com/51
'코딩테스트 준비(kotlin) > 기본' 카테고리의 다른 글
[프로그래머스 kotlin] 가장 큰 수 (0) | 2024.07.10 |
---|---|
[프로그래머스 kotlin] 2개 이하로 다른 비트 (0) | 2024.07.08 |
[프로그래머스 kotlin] 행렬의 곱셈 (0) | 2024.06.20 |
[프로그래머스 kotlin] n^2 배열 자르기 (0) | 2024.06.19 |
[프로그래머스] 연속 부분 수열 합의 개수 (0) | 2024.06.18 |