https://programmers.co.kr/learn/courses/30/lessons/86051?language=java
내가 푼 방법
구하는게 없는 숫자의 합이므로 1~9까지 더한 45에서 numbers를 모두 더한 값을 뺐다.
class Solution {
public int solution(int[] numbers) {
int answer = 0;
for(int i : numbers)
answer += i;
answer = 45 - answer;
return answer;
}
}
다른 사람 풀이
나랑 똑같은 방법을 사용했지만 이분은 45에서 numbers를 다 빼줬다.
IntStream 함수를 사용했다. IntStream은 자바8에 추가되었다. 처음봄ㅋ
원시데이터형 int를 스트림으로 다룰 수 있게 되었다고 한다. 굉장히 파이썬같이 생긴......
IntStream.range(0, 10) 하면 0~9까지 for문을 돌린거랑 같다. .filter()는 조건을 필터링해주는거고
.distinct()였으면 중복제거임
filter() 안에 조건인 i -> Arrays.stream(numbers).noneMatch(num -> i == num) 을 해석해보면
Arrays.stream(numbers)로 배열 스트림을 선언하고 numbers를 넣어준다.
아래는 스트림을 매칭시키는 메소드이다.
allMatch() : 모든 요소들이 매개값(Predicate)으로 주어진 조건을 만족하는지 조사
anyMatch() : 최소한 한 개의 요소가 주어진 조건에 만족하는지 조사
noneMatch() : 모든 요소들이 주어진 조건을 만족하지 않는지 조사
여기서는 noneMatch()를 사용했으므로 i == num이 아니라면 sum()을 해주는 거라고 해석할 수 있다.
정리하자면 0~9중에 i != num인 값을 더해준다는 뜻이다.
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 내적 for JAVA (0) | 2021.11.25 |
---|---|
[프로그래머스] 음양 더하기 for JAVA (0) | 2021.11.25 |
[프로그래머스] 크레인 인형뽑기 게임 for JAVA (0) | 2021.11.24 |
[프로그래머스] 키패드 누르기 for JAVA (0) | 2021.11.22 |
[프로그래머스] 숫자 문자열과 영단어 for JAVA (0) | 2021.11.22 |