42842. ์นดํซ
์ฝ๋ฉํ ์คํธ ์ฐ์ต - ์นดํซ
๋ฌธ์ ์ ํ | ๋์ด๋ | ๊ฑธ๋ฆฐ ์๊ฐ | ํด๊ฒฐ ์ ๋ฌด(โ /โ) |
---|---|---|---|
์์ ํ์ | lv.2 | 20๋ถ | โ |
#
์ค๊ณ ๋ฐฉ๋ฒbrown
ย ,ยyellow
ย ,ยreturn([x, y])
ย ์ ๋ค์๊ณผ ๊ฐ์ ๊ด๊ณ๋ฅผ ๊ฐ์ง๋ค.x * y === brown + yellow(x * 2) + (y * 2) - 4 === brown;(x - 2) * (y - 2) === yellow;
๋จผ์ ์ฒซ ๋ฒ์งธ ์ฑ์ง์ ์ด์ฉํด์, ์ธ์ ์(FactorPairs)์ ์ฐพ๋๋ค.
๊ฐ ์ธ์ ์์ reduce๋ก ์ํํ๋ฉฐ, ๋ ๋ฒ์งธ, ์ธ ๋ฒ์งธ ์ฑ์ง์ ๋ชจ๋ ๋ง์กฑํ๋ ์ธ์ ์์ ์ฐพ์ผ๋ฉด,ย
splice(0)
๋ก early break ํ๊ณ ์ธ์ ์์ ๋ฆฌํดํ๋ค.
#
์ฝ๋function solution(brown, yellow) { // (x * 2) + (y * 2) - 4 = brown; // (x - 2) * (y - 2) = yellow; // x * y = brown + yellow
return findFactorPairs(brown + yellow).reduce((_, [x, y], __, pairs) => { if (x * 2 + y * 2 - 4 === brown && (x - 2) * (y - 2) === yellow) { pairs.splice(0); return [x, y]; } }, []);}
function findFactorPairs(number) { const pairs = [[number, 1]];
for (let i = 2; i <= Math.sqrt(number); i++) { if (number % i === 0) { pairs.push([number / i, i]); } }
return pairs;}
#
์๊ฐ ๋ณต์ก๋findFactorPair
ย : O(root(N)) .. ?FactorPairs
ย ์ํ : O(N) (์์์์ ๊ฐ์๋ ์ต๋ N/2 ์ด๋ฏ๋ก .. ?)> O(N * root(N));
#
์ด๋ ค์ ๋ ์ - ๊ท์น์ ์ฐพ์๋ด๋๋ฐ์ ์ํ์ ์ธ ์ฌ๊ณ ๊ฐ ํ์ํ๋ค.
#
์ฐธ๊ณ ์๋ฃSplashLearn - Fun Math Practice Games for Kindergarten to 5th Grade