코딩테스트

프로그래머스 | 없는 숫자 더하기

다시은 2023. 12. 28. 09:53

 

풀이

class Solution {
    fun solution(numbers: IntArray): Int {
        var answer: Int = 0
        for(i in 0..9){
            if(numbers.indexOf(i)==-1){
                answer += i
            }
        }
        return answer
    }
}

 

구현은 바로 했는데 다른 사람 풀이 보면 백퍼 이것보다 훨씬 더 간단할 것 같다 ㅎ

 

fold 메소드를 드디어 처음 써봤다. 그런데  for 문이랑 별 차이가 없다.

class Solution {
    fun solution(numbers: IntArray): Int {
        var answer: Int = (0..9).fold(0){acc,num -> acc + if(numbers.indexOf(num) ==-1) num else 0 }
        return answer
    }
}

 

 

 

다른 사람 풀이 1

class Solution {
    fun solution(numbers: IntArray): Int  = 45 - numbers.sum()
}

0부터 9까지의 합인 45에서 배열의 합만큼 뺐다.

 

 

다른 사람 풀이 2

class Solution {
    fun solution(numbers: IntArray): Int = (0..9).filterNot(numbers::contains).sum()
}

filterNot(조건)

: 조건에 맞지않는 원소를 반환

numbers::contains

: numbers에 포함된 요소인지 확인

 

❓더블콜론 연산자 ::

더블콜론은 리플렉션을 위해서 사용한다.  *리플렉션 : 런타임에 인스턴스 등을 통해 객체의 내부 구조 등을 파악

함수를 직접 호출하는게 아니라 객체로 접근할 수 있다.