-
[프로그래머스] 내적 - JavaScript 📝Algorithm 2021. 11. 9. 10:12
[링크]
https://programmers.co.kr/learn/courses/30/lessons/70128
[문제설명 및 입출력 예]
내적 | 內積 | inner product
적은 '쌓는다'는 뜻의 한자이고, 여기서는 '곱한다'는 뜻이다. 벡터의 곱하기는 두 가지 정의가 있는데, 내적은 벡터를 마치 수처럼 곱하는 개념이다.
벡터에는 방향이 있으므로, 방향이 일치하는 만큼만 곱한다. 예를 들어 두 벡터의 방향이 같으면, 두 벡터의 크기를 그냥 곱한다. 두 벡터가 이루는 각이 90도일 땐, 일치하는 정도가 전혀 없기 때문에 내적의 값은 0이다. 내적은 한 벡터를 다른 벡터로 정사영 시켜서, 그 벡터의 크기를 곱한다.*출처: https://wikidocs.net/22384
👉 내적이 뭔지는 몰랐으나 입출력 예를 보고, a와 b 배열의 같은 위치에 있는 값들을 곱하고 모든 값을 더하라는 뜻으로 생각했다.
[내가 제출한 코드 및 풀이]
📝풀이과정
더보기- a와 b 배열의 길이만큼 반복문을 돌려야하는데, 길이(length)는 같으니까 그 중 a.length만큼 for문 돌림
- 반복문이 돌면서 a[i]값과 b[i]값을 곱하고, 연산 결과를 sum에 담는다.
[다른 사람의 코드]
1234567function solution(a, b) {let result = 0;for (let i in a) {result += a[i] * b[i]}return result}cs - 내 코드와 다른점은 3번 라인에서 for / in문을 사용해서 표현
1234function solution(a, b) {var answer = a.reduce((acc, cur, idx) => acc += cur*b[idx], 0)return answer;}cs - reduce 메서드를 사용해서 작성
reduce 함수는 네 개의 인자를 가진다.
1. 누산기(acc)
2. 현재 값(cur)
3. 현재 인덱스(idx)
4. 원본 배열(src)
👉 리듀서 함수의 반환 값은 누산기에 할당되고, 누산기는 순회 중 유지되므로 결국 최종 결과는 하나의 값이 된다.*출처: https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Array/Reduce
-> 이전에 Spring 프로젝트에서 장바구니 계산 기능을 Script 로 mapreduce(?) 를 써서 작성했었는데, 그 당시 찾아봤더니 누산기 기능이 있다고 했다. 그때는 해당 코드를 지우고 다른 코드로 리팩토링 했지만, 그런 느낌인듯✨
'Algorithm' 카테고리의 다른 글
[프로그래머스] 문자열 다루기 기본 - JavaScript 📝 (0) 2021.11.09 [프로그래머스] 문자열 내 p와 y의 개수 - JavaScript 📝 (0) 2021.11.09 [프로그래머스] 나누어 떨어지는 숫자 배열 - JavaScript 📝 (0) 2021.11.09 [프로그래머스] 2016년 - JavaScript 📝 (0) 2021.11.09 [프로그래머스] 부족한 금액 계산하기 - JavaScript 📝 (0) 2021.11.09