https://programmers.co.kr/learn/courses/30/lessons/70128
문제 설명
길이가 같은 두 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,2,3,4] | [-3,-1,0,2] | 3 |
[-1,0,1] | [1,0,-1] | -2 |
풀이
두 배열의 인덱스가 같은 원소들을 곱하여 총 합을 출력하면 된다.
for 문을 사용하면 쉽게 답을 도출할 수 있다.
function solution1(a, b) {
let answer = 0;
for (let i in a) {
answer += a[i] * b[i];
}
return answer;
}
위처럼 for를 사용하여 풀 수도 있지만, JS에서는 여러 유용한 메서드가 있다.
그 중에서 reduce는 배열의 모든 원소에 대해 함수를 시행하는 메서드인데, 인덱스 정보 역시 가지고 있으므로 이를 이용하면 reduce로도 내적을 구할 수 있다.
function solution(a, b) {
let answer = a.reduce((acc, _, i) => acc += (a[i] * b[i]), 0);
return answer;
}
아직 이런 메서드가 익숙하지 않아서 for문으로 푼 문제들을 위처럼 메서드로 푸는 연습을 계속 할 예정이다.
'CS > Algorithm\Coding Test' 카테고리의 다른 글
javascript로 백준 문제 풀기-input (0) | 2021.11.30 |
---|---|
프로그래머스-구명보트 (0) | 2021.11.28 |
프로그래머스-음양 더하기 (0) | 2021.11.22 |
프로그래머스-기능개발 (0) | 2021.11.20 |
Javascript-행렬의 값 더하기 (0) | 2021.11.08 |