문제출처

첫번째 문제 풀이


class Solution {
    public int solution(int[] numbers) {
        
        int answer = 0;
        int sum = 0;
        
        for(int i = 0; i <= 9; i++){
            sum += i;
        }
        
        for(int i = 0; i < numbers.length; i++){
            sum -= numbers[i];
        }
        
        answer = sum;
        
        return answer;
    }
}


0-9까지의 숫자중 존재하지 않는 숫자의 합을 구하는 문제이므로,

0-9까지의 숫자합을 구한후 numbers배열 안에 있는 숫자들을 빼면서 값을 구해준다.

이렇게 구현할 경우 코드가 매우 간단하고 이해하기가 쉽다.



두번째 문제풀이


class Solution {
    public int solution(int[] numbers) {
        
        int answer = 0;
        
        boolean[] exists = new boolean[10];
        
        for(int number: numbers){
            exists[number] = true;
        }
        
        for(int i = 0; i < exists.length; i++){
            if(!exists[i]){
                answer += i;
            }
        }
        
        
        return answer;
    }
}


boolean배열 ‘exists’를 사용하여 주어진 배열에 각 숫자가 존재하는지 여부를 체크한 다음,

존재하지 않는 숫자들을 합산하는 방식이다.

이 경우 어떤 숫자가 누락되었는지 파악할 수 있다.

즉 문제가 어떤 숫자가 누락되었는지를 확인하는 문제였다면 이방법이 더 적합하다.