9.18
ํ๋ฃจ์ ํ๋๋ผ๋ ๊ผญ ์ฝํ
ํ๊ธฐ!
(์
๋ฌธ์ ์ผ๋ฅธ ๋๋ด๋ฒ๋ฆฌ๊ณ ์๊ณ ๋ฆฌ์ฆ ๋ฌธ์ ๋ ํ์ด๋ด์ผ ํ ํ
๋ฐ
์ผ๋จ ์๊ฒฉ์ฆ ์ํ ๊ณต๋ถ๋ ์๊ณ ์๋ฐ๋ ํ๊ณ ์์ด์.. 10์์ ์ํ์ด ๋๋๋ฉด ํด์ผํ ๊ฒ ๋ง๊ฒ ๋ค.)
์ฝํ ์ ๋ฌธ ๋ฌธ์ - ์ ๊ณฑ์ ํ๋ณํ๊ธฐ
ํ๋ก๊ทธ๋๋จธ์ค
์ฝ๋ ์ค์ฌ์ ๊ฐ๋ฐ์ ์ฑ์ฉ. ์คํ ๊ธฐ๋ฐ์ ํฌ์ง์ ๋งค์นญ. ํ๋ก๊ทธ๋๋จธ์ค์ ๊ฐ๋ฐ์ ๋ง์ถคํ ํ๋กํ์ ๋ฑ๋กํ๊ณ , ๋์ ๊ธฐ์ ๊ถํฉ์ด ์ ๋ง๋ ๊ธฐ์ ๋ค์ ๋งค์นญ ๋ฐ์ผ์ธ์.
programmers.co.kr
โ ๋ฌธ์
์ด๋ค ์์ฐ์๋ฅผ ์ ๊ณฑํ์ ๋ ๋์ค๋ ์ ์๋ฅผ ์ ๊ณฑ์๋ผ๊ณ ํฉ๋๋ค. ์ ์ n์ด ๋งค๊ฐ๋ณ์๋ก ์ฃผ์ด์ง ๋, n์ด ์ ๊ณฑ์๋ผ๋ฉด 1์ ์๋๋ผ๋ฉด 2๋ฅผ returnํ๋๋ก solution ํจ์๋ฅผ ์์ฑํด์ฃผ์ธ์.
์ ํ์ฌํญ
1 โค n โค 1,000,000
๐ช ๋ด ์ฝ๋
function solution(n) {
let answer = 2;
for (let i = 1; i <= 1000; i++) {
if (i ** 2 == n) {
answer = 1;
break;
}
}
return answer;
}
Math.sqrt ๋ฉ์๋ ๋ฑ ์ฌ์ฉ ์์ด, for , if ๋ฌธ์ผ๋ก ํผ ํ์ด.
for๋ฌธ ์กฐ๊ฑด์์ n์ ๋ฒ์์ ๋ง์ท๋ค.
* ์์ ์ฌํญ - ์ฑ๋ฅ๊ฐ์ : for๋ฌธ ์ break ํ์ํ ์ง ์ฒดํฌํ๊ธฐ
์ฒ์์๋ if ๋ฌธ ์์ break๋ฅผ ์๊ฑธ์ด์ค์ n์ด ์ ๊ณฑ์์์ด ํ์ธ๋์ด๋ ๊ณ์ for๋ฌธ์ผ๋ก i <= 1000 ๊น์ง ๋๋ ค๋ฒ๋ฆผ.
=> break ๋ฌธ์ ์จ์ฃผ์๋๋, ํ์คํ ๋ช๋ช ์ผ์ด์ค์์ 0.04 ~ 0.05 ms ์ ๋ ์๊ฐ์ด ๊ฐ์ํ๋ค.
๐งธ ๋ค๋ฅธ ํ์ด
1)
function solution(n) {
return Number.isInteger(Math.sqrt(n)) ? 1 : 2;
}
- Number.isInteger() : ์ฃผ์ด์ง ๊ฐ์ด ์ ์์ธ์ง ํ๋ณ (๋ฐํ๊ฐ - boolean)
- Math.sqrt() : ์ซ์์ ์ ๊ณฑ๊ทผ ๋ฐํ (์์์ ์๋๊ฐ๊น์ง).
์ฃผ์ด์ง ์ซ์์ ๋ฃจํธ(โ )๋ฅผ ์์.
๋ง์ฝ ์ซ์๊ฐ ์์์ด๋ฉด NaN๋ฅผ ๋ฐํ.
(์ฐธ๊ณ https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Math/sqrt)