코딩테스트 문제
프로그래머스 없는 숫자 더하기
brianshin96
2023. 11. 21. 09:38
문제 설명
0부터 9까지의 숫자 중 일부가 들어있는 정수 배열 numbers가 매개변수로 주어집니다. numbers에서 찾을 수 없는 0부터 9까지의 숫자를 모두 찾아 더한 수를 return 하도록 solution 함수를 완성해주세요.
제한사항
- 1 ≤ numbers의 길이 ≤ 9
- 0 ≤ numbers의 모든 원소 ≤ 9
- numbers의 모든 원소는 서로 다릅니다.
제한사항을 보면 numbers배열에 중복값이 들어가지 않는다. 그렇다면 Array sort를 이용해 numbers를 정렬하고, 숫자값을 대조해 없는 숫자를 찾아 answer에 더하면 될것이다.
전에 사용한적 없던
IntStream.of(array).anymatch(x -> x == y)는 int배열에 요소들을 x, 찾고 싶은 값을 y로 했을때 결과를 boolean값으로 주는 메서드이다.
import java.util.Arrays;
import java.util.stream.IntStream;
class Solution {
public int solution(int[] numbers) {
int answer = 0;
Arrays.sort(numbers);
for (int i = 0; i <= 9; i++) {
int test = i;
if (!IntStream.of(numbers).anyMatch(x -> x == test)) {
answer += test;
}
}
return answer;
}
}
원래는 for문 안에 있는 i를 따로 test변수에 지정해주지 않으면 아래와 같은 에러가 나타났다.
/Solution.java:12: error: local variables referenced from a lambda expression must be final or effectively final
if (!IntStream.of(numbers).anyMatch(x -> x == i)) {
^
1 error