alorithm/programmers

[JAVA/프로그래머스] 없는 숫자 더하기

Hannana. 2023. 4. 30. 11:38
728x90
반응형

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

<제한사항>

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

 

<입출력 예>

numbers result
[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 해야 합니다.

 

 


 

[풀이]

import java.util.*;
import java.util.stream.*;
class Solution {
    public int solution(int[] numbers) {
        int answer = -1;
        List <Integer> noex = new ArrayList <>();
        List<Integer> strList = Arrays.stream(numbers).boxed().collect(Collectors.toList());
        for(int i=0;i<=9;i++){
            noex.add((strList.contains(i)==true)?0:i);
        }
        answer = noex.stream().mapToInt(Integer::intValue).sum();
        return answer;
    }
}

전체적으로 Arrays.stream을 이용해서 풀어봤다. 리스트가 총 두 개 선언되고 요소를 포함하는지 contains로 확인해서 없는 값을 새로운 동적할당 리스트에 넣어준다. 그리고 그 값을 모두 sum.

 

 

[다른 사람의 풀이]

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

 

ㅎㅎ 생각을 조금만 바꾸면 이렇게 쉽게 풀 수 있다.

문제를 너무 정직하게 풀려고하지 말자...ㅋㅋㅋㅋ

 

 

 

 

 

 

반응형