Daily LeetCode Challenge - 2348. Number of Zero-Filled Subarrays

Min Young Kim·2023년 3월 21일
0

algorithm

목록 보기
99/198

Problem From.

https://leetcode.com/problems/number-of-zero-filled-subarrays/

오늘 문제는 연속된 0 을 이용하여서 0 subarray 를 몇개나 만들 수 있는지 구하는 문제였다.

0이 연속으로 몇개 나오는지 이용하여 각 구간별로 0의 subarray 의 갯수를 구하면 됐는데,
0이 1개 나오면 1개
0이 2개 나오면 1+2 = 3개
0이 3개 나오면 1+2+3 = 6개
식으로 순차적으로 늘어나는 규칙을 가지고 있으므로,
array 를 처음부터 끝까지 탐색하면서 0이 몇개있는지 센 다음 규칙을 적용해주면 되었다.

class Solution {
    fun zeroFilledSubarray(nums: IntArray): Long {
        var answer = 0L
        var zeroContinue = false
        var cnt = 0L
        nums.forEach {
            when {
                it == 0 -> {
                    cnt += 1
                    zeroContinue = true
                }
                it != 0 && zeroContinue -> {
                    for(i in 1..cnt) {
                        answer += i
                    }
                    zeroContinue = false
                    cnt = 0
                }
            }
        }
        if(cnt != 0L) {
            for(i in 1..cnt) {
                answer += i
            }
        }
        return answer
    }
}
profile
길을 찾는 개발자

0개의 댓글