240125 ๋ชฉ TIL โ ...
๐ฉ๐ป ํ๋ก๊ทธ๋๋จธ์ค ๋ฌธ์ : ์ ์ ์ ๊ณฑ๊ทผ ํ๋ณ (์๋ ๋งํฌ)
n์ ์ ๊ณฑ๊ทผ์ด x์ผ ๋(x์ ์ ๊ณฑ์ด n)
ํจ์์์ (x+1)์ ์ ๊ณฑ์ ๋ฐํ, ์๋๋ฉด -1์ ๋ฐํํ๋ค.
์๋๋ ๋ด๊ฐ ๋ฌธ์ ๋ฅผ ํผ ์ฝ๋! (JS) - ๊ธฐ๋ณธ์ ์ธ for๋ฐ๋ณต๋ฌธ๊ณผ if๋ฌธ์ ํ์ฉํด ํ์๋ค
function solution(n) {
let answer = 0;
for(let x = 1; x <= n; x++) {
if (n/x == x) {
return (x+1)**2;
} else {
answer = -1;
}
}
return answer;
}
์์ง ์๊ณ ๋ฆฌ์ฆ ๋ฌธ์ ๋ค์ ์์ํ๊ฒ ํธ๋ ํธ์ ์๋๋ผ, ์ด ๋ฌธ์ ๋ฅผ ๋ดค์ ๋ ์ฒ์๋ถํฐ ์ด๋ป๊ฒ ํ์ด์ผ ํ ์ง ์ฝ๊ฐ ๋งํ์ง๋ง.. ํ์๋ค !
์ฐ์ for๋ฐ๋ณต๋ฌธ์์ x์ ๋ฒ์๋ฅผ ์ค์ ํด์ฃผ๊ณ
(x๋ ์์ ์ ์์ด๋ฏ๋ก 1๋ถํฐ, n๊น์ง์ด๋ค. n์ ์ ๊ณฑ๊ทผ์ด๋ n๋ณด๋ค ํด ์ ์๊ธฐ์),
x๋ฅผ ํ๋ํ๋ ๋๋ ค๊ฐ๋ฉฐ if๋ฌธ ์กฐ๊ฑด (x^2=n ๊ทธ๋ฌ๋๊น ์ฝ๋๋ก๋ x**2, n/x == x)์ ํด๋นํ๋ฉด, ๋ฌธ์ ์กฐ๊ฑด์ ๋ง๊ฒ ๋ฐํ.
์๋๋ผ๋ฉด -1์ (for๋ฌธ๋ฐ๊นฅ์์ ์ ์ธํ๋) answer ๋ณ์์ ๋ด์์ค๋ค.
(**์ฌ๊ธฐ์ for๋ฌธ ์์์ ๋ณ์ ์ ์ธํ๋ฉด ์๋๋ค.)
(๊ทธ๋ฆฌ๊ณ return์ for๋ฌธ ๋๋ ํ ํด์ค๋ค! else { } ์์์ return์ ํด์ฃผ๊ฒ๋๋ฉด, ๋ฐ๋ก else ์ ํด๋นํ ๋ return ํ๋ฉด์ for๋ฌธ์ ๋๋ด๋ฒ๋ฆฌ๊ธฐ ๋๋ฌธ์ด๋ค. ๊ณ์ ์ผ๋จ answer ๋ณ์์ -1์ ๋ด์๋๋ค๊ฐ, for๋ฐ๋ณต๋ฌธ์ด x<=n๊น์ง ๋ชจ๋ ๋๊ณ ๋๋๊ณ ๋์์ผ(x**2==n์ ๊ฒฝ์ฐ๊ฐ ์์๋ค๋ฉด) -1์ ๋ฆฌํดํ๋๋ก ํด์ค๋ค)
๊ฒ๋ค๊ฐ ๋ค์ํ ๋ฉ์๋๋ค์ ์ ๋ฆฌํด๊ฐ๊ณ ์๊ธด ํ์ง๋ง, ๋ชจ๋ฅด๋ ๋ฉ์๋๋ ๋ง๋ค.
์ค์ ์ด ๋ฌธ์ ๋ฅผ ํ์ดํ ๋ค๋ฅธ ์ฌ๋๋ค์ Math.sqrt() ๋ฉ์๋๋ reduce() ๋ฉ์๋๋ฅผ ์ฌ์ฉํ๊ธฐ๋ ํ๋ค.
reduce() ๋ฐฐ์ด๋ฉ์๋๋ ๋ง์ด ์ฐ๋ ๊ฑฐ ๊ฐ์ง๋ง ์์ง ์จ๋ณธ ์ ์ด ์๋ค.. MDN๋ฌธ์ ๋ฑ ์ฝ์ด๋ดค์ง๋ง ์ข ์ด๋ ต๋ค ..ใ ใ ๋ค์์ map, filter ๋ฑ์ ๋ฐฐ์ด๋ฉ์๋์ ํจ๊ป ๊ฐ์ด ์ ๋ฆฌํด๋ด์ผ๊ฒ ์!
* Math.sqrt() ๋ฉ์๋ : ์ซ์์ ์ ๊ณฑ๊ทผ์ ๋ฐํ. ์ฃผ์ด์ง ์ซ์์ ๋ฃจํธ(√ )๋ฅผ ์์์ค๋ค. ๋ฐ๋ผ์, ์ ์ ํน์ ์์๊ฐ ๋์ฌ ์๋ ์๋ค. ์์๋ฅผ ๋ฃ์ผ๋ฉด NaN์ผ๋ก ๋ฌ๋ค (์ค์ ๋ฒ์์์ ์๊ฐ, ํ์๋ ๋ฐ์ง์ง ์์ผ๋ฏ๋ก)
(์์ ์ถ์ฒ-MDN๋ฌธ์)
Math.sqrt(9); // 3
Math.sqrt(2); // 1.414213562373095
Math.sqrt(1); // 1
Math.sqrt(0); // 0
Math.sqrt(-1); // NaN