728x90
문제 설명
길이가 같은 두 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 이하입니다.
문제 풀이 방법
- 이번 문제는 스칼라 곱을 구하는 문제였다.
- a와 b에서 같은 인덱스 값을 갖는 값끼리 곱해준 뒤 모든 값을 더해주면 된다.
- 처음에는 for문을 이용해 각각의 값을 곱한뒤 빈 배열에 넣어 reduce()를 이용해 더했다.
- 하지만, reduce()에 index 파라미터가 있음을 다른 사람이 작성한 코드를 보고 알게되어 다시 작성해 봤다.
코드
function solution(a, b) {
let arr = [];
for(let i=0; i<a.length; i++){
arr.push(a[i] * b[i]);
}
return arr.reduce((i, x) => i + x, 0);
}
다시 작성한 코드
function solution(a, b) {
return a.reduce((i, x, index) => i + (a[index] * b[index]), 0);
}
728x90
'코딩 테스트 > 프로그래머스 코딩 테스트 연습' 카테고리의 다른 글
1Level / 월간 코드 챌린지 시즌1 / 3진법 뒤집기 (0) | 2022.07.06 |
---|---|
1Level / 월간 코드 챌린지 시즌2 / 음양 더하기 (0) | 2022.07.05 |
1 Level / 주간 코드 챌린지 / 최소 직사각형 (0) | 2022.07.01 |
이분탐색 / 3 / 입국심사 (0) | 2022.06.24 |
동적 계획법(Dynamic Programming) / 3 / N으로 표현하기 (0) | 2022.06.23 |