길이가 같은 두 1차원 정수 배열 a, b가 매개변수로 주어집니다. a와 b의 내적을 return 하도록 solution 함수를 완성해주세요.
이때, a와 b의 내적은 a[0]b[0] + a[1]b[1] + ... + a[n-1]*b[n-1] 입니다. (n은 a, b의 길이)
제한사항
a, b의 길이는 1 이상 1,000 이하입니다.
a, b의 모든 수는 -1,000 이상 1,000 이하입니다.
입출력 예
입력값1 : [1,2,3,4], [-3,-1,0,2]
출력값1 : 3입력값2 : [-1,0,1][1,0,-1]
출력값2 : -2
class Solution {
public int solution(int[] a, int[] b) {
int answer=0;
for(int i=0;i<a.length;i++){
answer=answer+a[i]*b[i];
}
return answer;
}
}
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();
}
}
다른 풀이
stream을 임포트하여서 범위를 지정한 뒤 map으로 각각의 인덱스의 값들을 sum()으로 합하였다.
for반복문을 사용하는 것에 비해 복잡해보이지만, 참신해보인다.
반복문을 사용하면 비교적 쉬운 문제였다. 다른 방법을 사용하여 문제를 풀이할 수 있는 방법을 찾아봐야겠다.