본문 바로가기
2023년 이전/Codility

Lesson 6 - Distinct

by JeongUPark 2019. 12. 14.
반응형

자세한 문제는 여기서 보실 수 있습니다.

이 문제는 array에 있는 값이 다른 숫자의 갯수를 반환하는 문제 입니다.

 

A[0] = 2 A[1] = 1 A[2] = 1 A[3] = 2 A[4] = 3 A[5] = 1 이럴때 1,2,3이 있으므로 3이 반환됩니다.

 

해결 code는 다음과 같습니다

fun solution(A: IntArray): Int {
    // write your code in Kotlin
    A.sort()
    
    var ans = 1
    var check = A[0]
    for(i in A.indices){
        if(check != A[i]){
            ans++
            check = A[i]
        }
    }
    return ans
}

그런데 이렇게 할경우 91%의 결과를 받습니다. (복잡도는 O(N*log(N)) or O(N) 입니다) 그 이유는 Array가 비어 있을 경우에 대한 처리가 없기 때문입니다. (제가 문제를 자세히 안 읽어서.. 그만..) 그래서 수정한 코드는

fun solution(A: IntArray): Int {
    // write your code in Kotlin
    if(A.size == 0){
        return 0
    }
    A.sort()
    
    var ans = 1
    var check = A[0]
    for(i in A.indices){
        if(check != A[i]){
            ans++
            check = A[i]
        }
    }
    return ans
}

단순히 위에 빈 array일 경우에 대한 처리만 해주면 됩니다. 그럼 100%의 결과를 확인 할 수 있습니다.(복잡도는 똑같습니다)

 

 

반응형

'2023년 이전 > Codility' 카테고리의 다른 글

Lesson7 - Brackets  (0) 2019.12.19
Lesson6 - Triangle  (0) 2019.12.16
Lesson6 - MaxProductOfThree  (0) 2019.12.13
Lesson5 - CountDiv  (0) 2019.12.13
Codility - Lesson5 MinAvgTwoSlice  (0) 2019.12.13