본문 바로가기
코딩 테스트/프로그래머스

[ 프로그래머스 - java ] 없는 숫자 더하기 (월간 코드 챌린지 시즌3)

by snow_hong 2022. 3. 22.
문제 설명
0부터 9까지의 숫자 중 일부가 들어있는 정수 배열 numbers가 매개변수로 주어집니다. numbers에서 찾을 수 없는 0부터 9까지의 숫자를 모두 찾아 더한 수를 return 하도록 solution 함수를 완성해주세요.- 1 ≤ numbers의 길이 ≤ 9- 0 ≤ numbers의 모든 원소 ≤ 9- numbers의 모든 원소는 서로 다릅니다.

[ 풀이 ]

//import java.util.Arrays;

class Solution {
    public int solution(int[] numbers) {

        //1번째 방법
        int answer = 45;

            for(int num : numbers){
                    answer -= num;
            }

        
        
        /*
//2번째 방법
         int answer = 0;

        int[] nums = new int[10];
        for(int i = 0; i < 10; i++){
            nums[i] = i;
        }
        
        int i = 0;
        for(int num : nums){
             for(int number : numbers){
                if(num == number){
                    nums[i] = 0;
                    break;
                }
             }
            i++;
        }
        
        
        for(int num : nums){
            answer += num;
        }*/
        
        return answer;

//다른사람 풀이
//return 45-Arrays.stream(numbers).sum();

    }
}

1번째 방법은 조건이 numbers의 모든 원소는 서로 다르다고 해서 0~9를 합한 값에서 빼면 코드가 간결하고 쉽게 해결될 것 같아서 처음엔 이런식으로 풀었다. 만약에 numbers의 원소가 중복된 값이 들어가게 되면 1번째 방법은 사용할 수 없을 것 같아서 중복된 원소가 있어도 만들 수 있는 소스코드도 한번 구현을 해보았다!

다른사람 풀이를 보니깐 배열에 저장된 데이터 총합을 구하는 메소드가 있어서 알아두면 유용하게 사용할 것 같다!


[ 코드 풀이 ]

Arrays.stream(배열).sum()

- 배열에 저장된 데이터 합계를 구하는 메소드

- import java.util.Arrays; 클래스 선언 필요

728x90

댓글