반응형
상세 문제는 여기서 확인 하실 수 있습니다.
문제를 간단히 설명하면 0 다음에 1이 몇개 오는지 전부 세서 return 하는 문제입니다.
간단하게 문제의 예를 보면 array A가
A[0] = 0
A[1] = 1
A[2] = 0
A[3] = 1
A[4] = 1
이럴 때 0 다음에 1인 갯수는 A[0]= 0일 때 1이 3개가 있고 A[2]= 0 일때 2개 총 5개가 나옵니다. (0,1),(0,3),(0,4),(2,3),(2,4)
그럼 문제를 풀어보도록 하겠습니다.
fun solution(A: IntArray): Int {
// write your code in Kotlin
var count = 0
val maxSize = A.size
val exceptCount = 1000000000
val zero =arrayListOf<Int>()
for (i in A.indices) {
if (A[i] == 0) {
zero.add(i)
}
}
val zSize = zero.size
for (i in zero.indices) {
if(count > exceptCount) return -1
count += maxSize - zSize - zero[i] + i
}
return count
}
문제는 보면 총 갯수가 1000000000이 넘어가면 -1을 리턴하도록 되어있습니다.
그래서 count가 1000000000일 경우 -1을 return 합니다.
그리고 본격적인 로직은
전체 array A의 갯수에서 0의 갯수를 빼고 0의 순서 값을 뺀 후 몇번째 0이었는지에 대한 값을 더해주면 각 0 이후에 나오는 1의 갯수를 계산 할 수 있습니다.
Code에서는
count += maxSize - zSize - zero[i] + i
이 부분 입니다.
반응형
'2023년 이전 > Codility' 카테고리의 다른 글
Codility - Lesson5 MinAvgTwoSlice (0) | 2019.12.13 |
---|---|
Lesson 5 - GenomicRangeQuery (0) | 2019.12.06 |
Codility - Lesson 4 MissingInteger (0) | 2019.11.15 |
Codility - Lesson 4 MaxCounters (0) | 2019.11.14 |
Codility - Lesson4 FrogRiverOne (0) | 2019.11.14 |