문제 설명
길이가 같은 두 1차원 정수 배열 a, b가 매개변수로 주어진다.
a와 b의 내적을 return 하는 함수를 완성하세요
(내적이란 적을 쌓는다는 뜻의 한자이고, 곱하다는 뜻을 가지고 있다.)
이때, 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 이하입니다.
내가 푼 문제 풀이
function solution(a, b) {
let answer = 0
for(let i = 0; i<a.length; i++){
answer += a[i] * b[i]
}
// 두 1차원 배열의 길이는 같기 때문에 for문을 한번만 돌린다.
return answer;
}
function solution(a, b) {
let answer = 0
a.forEach((item, i)=>{
answer += item * b[i]
})
return answer;
}
1) a, b 배열이 길이가 같고 반환 값이 없기 때문에 forEach() 함수를 사용한다.
2) a 배열의 요소는 item에 들어 있기 때문에 item * b[i]를 연산해서 answer에 += 한다.
다른 사람이 푼 문제 풀이
function solution(a, b) {
return a.reduce((total, val, index) => total + val * b[index], 0);
// 초깃값
// 초깃값을 지정하지 않으면 배열의 첫번째 값이 초깃값으로 지정된다.
}
reduce()
: 내가 이해한 reduce() 함수는 배열을 돌면서 연산을 진행하고 최종적으로는 하나의 결과값을 반환하는 함수
reduce 함수는 네 개의 인자를 가진다.
1) 누산기
2) 현재 값
3) 현재 인덱스
4) 원본 배열
reduce의 반환 값은 누산기에 할당되고, 누산기는 순회 중 유지 되기 때문에 결국 최종 결과는 하나의 값이 된다.
즉, 배열.reduce((누적값, 현재값, 인덱스, 요소) => {return 결과}, 초깃값);의 형태가 된다.
(초깃값을 지정하지 않으면 배열의 첫번째 값이 초깃값으로 지정된다.)
https://ghost4551.tistory.com/48
[프로그래머스 JavaScript] 내적
프로그래머스 Level1 내적 문제 문제 풀이 : 따로 설명할 것도 없이 매우 간단한 문제이다. 흔히 알고있는 for문으로 해결했다가 다른 문제풀이를 보았는데 reduce 함수를 이용하여 푼 풀이를 보고
ghost4551.tistory.com
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의
programmers.co.kr
'⛵ 항해 중 > 2주차 알고리즘(프로그래머스)' 카테고리의 다른 글
3일차 → 완주하지 못한 선수(sort(), find()) (0) | 2021.11.10 |
---|---|
2일차 → 2016년(Date 생성자 함수, toString()) (0) | 2021.11.09 |
2일차 → x만큼 간격이 있는 n개의 숫자(Array 생성자 함수, fill(), map()) (0) | 2021.11.09 |
2일차 → 나누어 떨어지는 숫자 배열(filter(), sort()) (0) | 2021.11.09 |
2일차 → 행렬의 덧셈(배열-push()) (0) | 2021.11.09 |
댓글