없는 숫자 더하기

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


    1. 0부터 9까지 다 더한 값을 미리 준비한 후 numbers 안의 숫자를 하나씩 빼주기

    간단하게 생각해서 0부터 9까지 숫자는 전부 더하면 45이므로 45에서 numbers 배열에 있는 숫자를 빼면 남는 숫자의 합이 구해진다.

    예를들어

    numbers = {1, 2, 3, 4, 6, 7, 8, 0}

    0부터 9까지의 숫자 중에 없는 숫자는 5, 9이므로 합은 14이다.

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

    2. boolean 배열 사용하기

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

    check 배열로 출석부를 만든다.

    boolean[] check = new boolean[10];

    예를 들어 numbers에 3이 있으면

    check[3] = true;

    3번 숫자는 있다고 표시한다.
    마지막에 0부터 9까지 보면서

    if (check[i] == false)

    아직 false인 숫자는 numbers에 없는 숫자니까 answer에 더한다.


    3. 이중 for문 사용하기

     class Solution {
         public int solution(int[] numbers) {
             int answer = 0;
    
             for (int i = 0; i <= 9; i++) {
                 boolean found = false;
    
                 for (int j = 0; j < numbers.length; j++) {
                     if (i == numbers[j]) {
                         found = true;
                         break;
                     }
                 }
    
                 if (found == false) {
                     answer += i;
                 }
             }
    
             return answer;
         }
     }

    0부터 9까지 하나씩 물어보고 없으면 더한다.

      if (found == false) {
        answer += i;
    }

    4. Stream 사용하기

     import java.util.Arrays;
    
     class Solution {
         public int solution(int[] numbers) {
             return 45 - Arrays.stream(numbers).sum();
         }
     }

    numbers 배열 안의 숫자를 전부 더해준다.

    Arrays.stream(numbers).sum()

    그리고나서

    45 - numbers의 합

    을 바로 return하는 방식


0개의 댓글