์ ์๋ฅผ ์์๋ก ๊ฐ๋ ๋ฐฐ์ด์ ์ ๋ ฅ๋ฐ์ 3๊ฐ์ ์์๋ฅผ ๊ณฑํด ๋์ฌ ์ ์๋ ์ต๋๊ฐ์ ๋ฆฌํดํด์ผ ํฉ๋๋ค.
์ธ์ 1 : arr
number ํ์
์ ์์๋ก ๊ฐ๋ ์์์ ๋ฐฐ์ด
number ํ์ ์ ๋ฆฌํดํด์ผ ํฉ๋๋ค.
const largestProductOfThree = function (arr) {
const mulArr =[]
for(let i=0;i<arr.length;i++){
for(let j=i+1;j<arr.length;j++){
for(let k=j+1;k<arr.length;k++){
mulArr.push(arr[i]*arr[j]*arr[k])
}
}
}
return Math.max.apply(null,mulArr)
};
3๊ฐ์ ๊ณฑ์ด ๊ฐ์ฅ ํฐ ๊ฐ์ ๊ตฌํด์ผ ํ๋ฏ๋ก 3์ค ๋ฐ๋ณต๋ฌธ์ ๋๋ ค์ ๋ชจ๋ ๊ณฑ๋ค์ ๋ฐฐ์ด์์ ๋ฃ๋ ๋ฐฉ๋ฒ์ผ๋ก ์์ฑํ๋ค
๋ง์ง๋ง์ return ์ผ๋ก Math.max()๊ฐ NaN์ผ๋ก ๋ ์ ์ ๋จน์๋๋ฐ
์๊ณ ๋ณด๋ Math.max()์์ ๋ฐฐ์ด ๊ฐ์ฒด๋ฅผ ๋ฃ์ผ๋ฉด NaN์๋ฌ ๊ฐ ๋๋ค๊ณ ํ๋ค.
๊ทธ๋์ Math.max.apply(null,๋ฐฐ์ด) ์ํ๋ก ์ ์ด์ค์ผ ํ๋ค.
apply() ๋ฉ์๋๋ ์ฃผ์ด์ง this ๊ฐ๊ณผ ๋ฐฐ์ด (๋๋ ์ ์ฌ ๋ฐฐ์ด ๊ฐ์ฒด) ๋ก ์ ๊ณต๋๋ arguments ๋ก ํจ์๋ฅผ ํธ์ถํ๋ค๊ณ ํ๋ค.
https://ju-won.tistory.com/30
https://inpa.tistory.com/entry/JS-%F0%9F%93%9A-Call-Bind-Apply
const largestProductOfThree = function (arr) {
const sorted = arr.slice().sort((a, b) => a - b);
const len = arr.length;
const candi1 = sorted[len - 1] * sorted[len - 2] * sorted[len - 3];
const candi2 = sorted[len - 1] * sorted[0] * sorted[1];
return Math.max(candi1, candi2);
};
์ฝ๋์คํ ์ด์ธ ๋ ์ ๋ต์ฐธ๊ณ ์ฉ์ผ๋ก ๋ ํผ๋ฐ์ค๋ฅผ ์ฃผ๋๋ฐ..^^ !