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

์ฝ”๋”ฉํ…Œ์ŠคํŠธ/ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค

[Javascript] N๊ฐœ์˜ ์ตœ์†Œ๊ณต๋ฐฐ์ˆ˜ (12953)

๋ฌธ์ œ๋งํฌ

 

์ ‘๊ทผ ๋ฐฉ๋ฒ•

์ตœ๋Œ€ ๊ณต์•ฝ์ˆ˜๋ฅผ ๊ตฌํ•˜๋Š” ํ•จ์ˆ˜ gcd๋ฅผ ๋งŒ๋“ค์–ด์„œ 
์ตœ์†Œ ๊ณต๋ฐฐ์ˆ˜๋ฅผ ๊ตฌํ•˜๋Š” ๋ฐฉ๋ฒ•์— ์‚ฌ์šฉ ( (a,b)์˜ ์ตœ์†Œ ๊ณต๋ฐฐ์ˆ˜ : a * b / gcd(a, b) )

โ€ป reduce : accumulator(๋ˆ„์‚ฐ๊ธฐ), currentValue(ํ˜„์žฌ๊ฐ’), currentIndex(ํ˜„์žฌ ์ธ๋ฑ์Šค), array(์›๋ณธ ๋ฐฐ์—ด), initialValue(์ฒซ ๋ฒˆ์งธ ์ธ์ˆ˜์— ์ œ๊ณต ๊ฐ’)์„ ์ธ์ˆ˜๋กœ ๋ฐ›๋Š”๋‹ค.

์ด๋•Œ accumulator, currentValue์€ ๊ธฐ๋ณธ ๊ฐ’์œผ๋กœ ๋“ค์–ด๊ฐ€๊ณ , ๋‚˜๋จธ์ง€๋Š” ์˜ต์…˜๊ฐ’์ด๋‹ค.

์ฆ‰, ๊ธฐ๋ณธํ˜• reduce(a, b)์—์„œ  a๋Š” ๋ˆ„์  ๊ฐ’์ด ๋“ค์–ด๊ฐ€๊ณ  b์—๋Š” ๋‹ค์Œ ๋ฐฐ์—ด์˜ ๊ฐ’์ด ๋“ค์–ด๊ฐ„๋‹ค.



์ฝ”๋“œ์—์„œ reduce์˜ ์ถœ๋ ฅ์— { }์„ ๋„ฃ์œผ๋ฉด ์˜ค๋ฅ˜๊ฐ€ ๋‚˜์˜ค๋Š”๋ฐ.. console์„ ์ฐ์–ด๋ด๋„ ๊ฐ™๊ฒŒ ๋‚˜์˜ค๋Š”๋ฐ ์ด์œ ๋ฅผ ๋ชจ๋ฅด๊ฒ ๋‹ค.
return arr.reduce((a, b) => {(a * b) / getGcd(a, b)})โ€‹

==> MDN ๊ณต์‹ ๋ฌธ์„œ๋ฅผ ์‚ดํŽด๋ณด๋‹ˆ, ์ดˆ๊ธฐ๊ฐ’(initialValue)๋ฅผ ์„ค์ •ํ•˜์ง€ ์•Š๊ณ  { }์„ ์‚ฌ์šฉํ•ด์„œ ๋ฌธ๋ฒ•์ ์œผ๋กœ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•œ ๊ฒƒ์ด๋‹ค.

reduce์—์„œ { }์„ ์‚ฌ์šฉํ•˜๋ ค๋ฉด ์•„๋ž˜์ฒ˜๋Ÿผ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค.
return arr.reduce((a, b) => {(a * b) / getGcd(a, b)}, ์ดˆ๊ธฐ๊ฐ’)โ€‹โ€‹

 

function solution(arr) {
    return arr.reduce((a, b) => (a * b) / getGcd(a, b))
}

function getGcd(a, b) {
    return a % b ? getGcd(b, a % b) : b; 
}