[Java]코딩테스트 연습 - 없는 숫자 더하기(Lv1)

Gentlee's Self-Study Log·2023년 5월 15일
0

Java Coding Test

목록 보기
5/8
post-thumbnail

없는 숫자 더하기

난이도 Lv.1 / 정답률 83%

문제 설명

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

제한 사항

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

입출력 예시

  • numbers = {1,2,3,4,6,7,8,0} -> answer = 14
    5, 9가 numbers에 없으므로, 5 + 9 = 14를 return 해야 합니다.
  • numbers = {5,8,4,0,6,7,9} -> answer = 6
    1, 2, 3이 numbers에 없으므로, 1 + 2 + 3 = 6을 return 해야 합니다.

나의 풀이

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

다른 풀이 1

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

풀이 해석

간단하게 0~9까지의 합인 45에서 주어진 배열을 뺀 값이다.

다른 풀이 2

import java.util.Arrays;

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

풀이 해석

스트림을 이용하여 다른 풀이 1 과 같이 0~9까지의 합인 45에서 배열의 값을 뺀 값이다.

피드백

문제를 풀 당시에는 단순히 문제 설명만 보고 주어진 배열에서 0~9까지의 숫자 중 안들어가 있는 숫자를 찾는것에만 열중했지만, 다른 풀이들을 보고 망치로 한대 얻어 맞은듯한 느낌을 받았다. 그냥 45에서 빼면 되는것을 너무 어렵게만 생각해서 다른 관점으로 보지 못하였다.

profile
https://github.com/SamGentlee

0개의 댓글