Notice
Recent Posts
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- CSS기초
- JS appendChild
- JS value속성
- JS setInterval
- JS redirection
- JS 형변환
- HTML기초
- JS preventDefault
- JS 삼항연산
- CSS속성정리
- JS form action
- git 협업셋팅
- JS append
- js 변수
- JS 연산
- JS typeof연산자
- JS 함수
- JS classList
- JS clearInterval
- JS form
- JS 숫자
- JS 데이터타입
- JS 스코프
- JS 화살표함수
- JS 기초
- JS 타이머기능
- JS prompt
- JS null undefined
- JS setTimeout
- JS localStorage
Archives
공부기록용
프로그래머스(LV 1. 내적) 본문
LV 1. 내적
https://school.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>
function solution(a, b) { let result = 0; for (let i in a) { result += a[i] * b[i] } return result } console.log(solution([1,2,3,4], [-3,-1,0,2]))
다른 풀이
> 배열 a를 reduce진행function solution(a, b) { return a.reduce((acc, _, i) => acc += a[i] * b[i], 0); }
🔴배운거(매개변수중 currentValue를 공백으로 둔 경우)
> callback함수의 매개변수는 acc, ' _ ', i이고, 여기서 ' _ '는 현재 요소를 의미하지 않고, 사용하지 않을 것을 나타내는 용도로 사용되고, i는 현재 요소의 인덱스를 나타낸다.
> callback함수 내의 동작은 acc += a[i] * b[i]이다.
> solution(a, b)함수는 배열 a와 b의 요소를 곱한 값을 모두 누적하여 반환한다.
> 여기서 acc, _, i인 이유를 알 수 있는데 누적기
> 즉, acc에 a[i] * b[i]값을 계속 더해나가고는데 만약 currentValue 값이 있었다면 그 과정도 진행이 되어야 하는거니까
> 단지 a[i] * b[i]의 값들을 더한거를 출력하기 위해 acc에 뭘 더 하는걸 하지 않은거임 공백으로 둬서 오키 이해
> i는 현재 딱 시작 시점에서의 인덱스를 의미하는 거고
> 1*-3을 acc에 더하고 = -3
> 2*-1을 -2에 더하고 = -5
> 3*0을 -5에 더하고 = -5
> 4*2를 0에 더하고 = 3
> 따라서 최종 값은 3
const solution = (a, b) => a.reduce((acc, cur, i) => {
return acc += cur * b[i]
}, 0)
'✍️문제풀기✍️ > JS_Programmers school' 카테고리의 다른 글
프로그래머스(LV 1. 문자열 다루기 기본) (0) | 2023.06.19 |
---|---|
프로그래머스(LV 1. 문자열 내 p와 y의 개수) (0) | 2023.06.19 |
프로그래머스(LV 1. 행렬의 덧셈) (0) | 2023.06.19 |
프로그래머스(LV 1. 평균구하기) (0) | 2023.06.19 |
프로그래머스(LV 1. 직사각형 별찍기) (0) | 2023.06.19 |
Comments