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

Codility - Lesson 4 MissingInteger

by JeongUPark 2019. 11. 15.
반응형

상세한 문제는 여기서 확인할 수 있습니다.

 

간단하게 Array A에서 없는 값중 가장 큰 값을 반환하는 문제입니다. Array A의 모든 값이 음수면 1을 순열이면 Array A에 있는 값들중 가장큰 값보다 1큰 값을 반환하는 문제입니다.

 

해결 code는

un solution(A: IntArray): Int {
    // write your code in Kotlin
    var max = 0;
    for(i in A.indices){
        if(max < A[i]){
         max = A[i]
        }
    }
    
    var B = BooleanArray(max)
    var isPositive = false
    for(i in A.indices){
        if(A[i] > 0){
            isPositive = true
            B.set(A[i]-1, true)
        }
    }
    if(!isPositive){
        return 1
    }
    for(i in B.indices){
        if(B[i] == false){
            return i+1       
        }
    }
    return B.size+1
    
}

coding은 간단합니다.

 

가장큰 값을 찾고, 그 숫자만큼의 크기를 가지는 Array B를 만듭니다.

그래서 그 Array B에 숫자가 존재하는 순서를 true로 바꿔줍니다. 이때 음수도 고려해야하기 때문에 양수 값이 있는지 없는지도 체크합니다. (양수가 없으면 바로 1을 return 하면되기 때문입니다.)

그리고 생성된  Array B를 통하여 false를 찾아 그 값에 1을 더해서 반환하면 됩니다.(Array는 0부터 시작하기 때문입니다.) 만약 false가 없다면 크기에 1을 더해서 반환합니다.

반응형

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

Lesson 5 - GenomicRangeQuery  (0) 2019.12.06
Lesson 5 - PassingCars  (0) 2019.11.28
Codility - Lesson 4 MaxCounters  (0) 2019.11.14
Codility - Lesson4 FrogRiverOne  (0) 2019.11.14
Codility - Lesson 4 PermCheck  (0) 2019.11.12