본문 바로가기

코딩 테스트

[프로그래머스] (Lv.1) 없는 숫자 더하기

728x90

문제


0부터 9까지의 숫자 중 일부가 들어있는 정수 배열 numbers가 매개변수로 주어집니다. numbers에서 찾을 수 없는 0부터 9까지의 숫자를 모두 찾아 더한 수를 return 하도록 solution 함수를 완성해주세요.

 

 

-  출력 예시  -

정답 코드


<  내 정답 코드  >

class Solution {
    public int solution(int[] numbers) {
        int sum = 0;
        
        outer:
        for (int i = 1; i <= 9; i++) {
            for (int j = 0; j < numbers.length; j++) {
                if (i == numbers[j]) {
                    continue outer;
                }
            }
            sum += i;
        }
        
        return sum;
    }
}

 

<  타인 답변 코드  >

class Solution {
    public int solution(int[] numbers) {
        int sum = 45;
        for (int i : numbers) {
            sum -= i;
        }
        return sum;
    }
}

이것을 주의하자!


-  해당 배열에 1 ~  9 숫자가 있는지 확인 후, 있으면 외부 for 문으로 돌아가고, 없으면 해당 숫자를 sum 에 더한 후 반환했다.

 

-  타인 답변 코드를 보면 너~~무 간단하다. 1부터 9까지 모든 숫자를 더한 숫자에서 존재하는 숫자들을 하나씩 빼면 결국 없는 숫자의 합이 될테니 말이다. 대단한 발상의 전환이다... 감탄...