-
프로그래머스 없는 숫자 더하기코딩테스트 문제 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
'코딩테스트 문제' 카테고리의 다른 글
(프로그래머스/자바) 전력망을 둘로 나누기 (1) 2024.03.14 프로그래머스) 피로도 (0) 2024.02.23 프로그래머스) 숫자 변환하기 (0) 2024.02.23 프로그래머스 핸드폰 번호 가리기 (0) 2023.11.20 프로그래머스 음양 더하기 (2) 2023.11.20