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
}
}