[프로그래머스] 내적 (Java)
class Solution {
public int solution(int[] a, int[] b) {
int answer = 0;
for(int i = 0; i < a.length; i++){
answer += a[i] * b[i];
}
return answer;
}
}
아래는 stream을 활용한 풀이이다.
import java.util.stream.IntStream;
class Solution {
public int solution(int[] a, int[] b) {
return IntStream.range(0, a.length).map(index -> a[index] * b[index]).sum();
}
}
IntStream을 통해서 0부터 ‘a’배열의 길이까지의 정수 스트림을 생성한다.
.map(index -> a[index] * b[index])를 사용해서 각 인덱스에 대해 ‘a’배열과 ‘b’ 배열의 해당 인덱스에 위치한 값들을 곱한다.
.sum()을 호출하여 위에서 생성된 곱셈 결과들을 더한다.
IntStream은 Java8부터 도입된 Stream API의 일부이다.
기본 타입인 ‘int’의 시퀀스를 효율적으로 처리할 수 있는 방법을 제공한다.
다양한 중간연산(map,filter,sorted 등)과 최종 연산(sum, max, min, average 등)을 제공한다.
IntStream을 생성하는 방법에는 여러가지가 있다.
IntStream.range(int startInclusive, int endExclusive)
시작값(startInclusive)부터 종료값(endExclusive)까지의 연속된 정수 스트림을 생성한다.
단 종료 값은 결과에 포함이 되지 않는다.
for(int i = startInclusive; i < endExclusive; i++)
IntStream.rangeClosed(int startInclusive, int endInclusive)
시작값(startInclusive)부터 종료값(endExclusive)까지의 연속된 정수 스트림을 생성한다.
종료 값도 결과에 포함된다.
for(int i = startInclusive; i <= endExclusive; i++)
IntStream.of(int… values)
하나 이상의 정수 인자를 받아 그 정수들로 구성된 스트림을 생성한다.
인자의 개수에 제한이 없으며, 주어진 순서대로 스트림에 포함된다.
Arrays.stream(int[] array)
정수 배열을 인자로 받아, 해당 배열의 요소로 구성된 스트림을 생성한다.