๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Algorithm

[Algorithm] ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค Lv.1 : ๋‚ด์ (ๅ…ง็ฉ, inner product)

by ์ฝ”๋”ฉ๊ณต์ฑ… 2022. 11. 21.
๋ฐ˜์‘ํ˜•

๋‚ด์ (ๅ…ง็ฉ, inner product)

๊ธธ์ด๊ฐ€ ๊ฐ™์€ ๋‘ 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
* a์™€ b์˜ ๋‚ด์ ์€ 1*(-3) + 2*(-1) + 3*0 + 4*2 = 3 ์ž…๋‹ˆ๋‹ค.

์ž…์ถœ๋ ฅ ์˜ˆ #2
* a์™€ b์˜ ๋‚ด์ ์€ (-1)*1 + 0*0 + 1*(-1) = -2 ์ž…๋‹ˆ๋‹ค.

a b result
[1,2,3,4] [-3,-1,0,2] 3
[-1,0,1] [1,0,-1] -2

๋ฌธ์ œ ํ’€์ด

i๋ฅผ a์˜ ๋ฐ์ดํ„ฐ ๊ฐœ์ˆ˜๋งŒํผ(0,1,2,3) ์ฆ๊ฐ€์‹œํ‚จ๋‹ค. sum์— a[0~3] * b[0~3]์„ ์ €์žฅ์‹œํ‚จ๋‹ค. ๊ฒฐ๊ณผ์ ์œผ๋กœ 1*-3 / 2*-1 / 3*0 / 4*2 ์™€ -1*1 / 0*0 / 1*-1 ๊ฐ€ ์ €์žฅ๋œ๋‹ค.

function solution(a, b) {
    let sum = 0;
    for(let i=0; i < a.length; i++){
        sum += a[i]*b[i];
    }
    return sum;
}

๋‹ค๋ฅธ ํ’€์ด ๋ฐฉ์‹

reduce๋กœ ํ•œ ์ค„๋กœ ํ’€์–ด๋‚ด๋Š” ๋ฐฉ์‹์ด ์žˆ๋‹ค.

function solution(a, b) {
    return a.reduce((acc, _, i) => acc += a[i] * b[i], 0);
}
๋ฐ˜์‘ํ˜•

๋Œ“๊ธ€


Reference Book

JavaScript
HTML
CSS
๊ด‘๊ณ  ์ค€๋น„์ค‘์ž…๋‹ˆ๋‹ค.