[Programmers][Level1] 없는 숫자 더하기

울부짖는 늑대·2023년 7월 4일

문제 설명

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

제한 사항

  • 1 ≤ numbers의 길이 ≤ 9
    • 0 ≤ numbers의 모든 원소 ≤ 9
    • numbers의 모든 원소는 서로 다릅니다.

입출력 예

numbersresult
[1,2,3,4,6,7,8,0]14
[5,8,4,0,6,7,9]6

입출력 예 설명

입출력 예 #1

  • 5, 9가 numbers에 없으므로, 5 + 9 = 14를 return 해야 합니다.

입출력 예 #2

  • 1, 2, 3이 numbers에 없으므로, 1 + 2 + 3 = 6을 return 해야 합니다.

나의 코드

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

풀이 방법

  • 사실 이 문제를 푸는데 시간이 꽤 걸렸다. 여러가지 함정이 있어서 머리가 꽤 복잡해졌다.
  • 난이도가 낮은 문제임에도 고민을 오래 했던 것 같다
  • 함정은 일단 첫번째! 숫자 0~9와 배열 객체의 길이가 일정하지 않았던 점.
  • 그리고 입출력 예시를 참고 했기 때문에, 숫자 하나하나를 골라내서 더해주는 방식으로 생각했는데 그게 아니였다.
  • 그냥 0~9의 수는 일정하기 때문에 전부 더해주고, numbers 배열의 원소들의 합을 빼주면 되는 것이였다.

다른 풀이

import java.util.Arrays;

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

풀이 방법

  • Arrays.Stream()이라는 java.util.Arrays 클래스의 함수이다.
  • for문을 사용하지 않아도 배열을 스트림으로 풀어내는 방법도 있다.
profile
이상을 현실로 구현하는 개발자

0개의 댓글