
프로그래머스 120909번
제곱수 판별하기 문제다.

처음에는
for문을 사용해 1000까지 다 반복해서 i의 제곱수이면 1을 return하고 아니라면 2를 return하게 할까? 고민했다. 하지만 메소드가 있을 것 같아 찾아보니 역시 있었다.
💡 Math.sqrt()
: 루트 값을 구하는 메소드다.
Math.sqrt(4)
//2
Math.sqrt(3)
//NaN
인자에 n을 넣어서 만약 1로 나눈 후 나머지 값이 0이라면 제곱수인 것이다.(return 1)
그리하여 풀이는 다음과 같다.
function solution(n) {
if (Math.sqrt(n)%1 == 0){
return 1;
}
return 2;
}
💡 Number.isInteger
더 간단한 풀이 방식이 있다.
Number.isInteger() 메서드는 주어진 값이 정수인지 판별한다.
function solution(n) {
return Number.isInteger(Math.sqrt(n)) ? 1 : 2;
}
n의 루트값을 구한 후 그 값이 만약 정수라면 1을, 정수가 아니라면 2를 return한다.
번외) 제곱값 구하기
Math.pow(base, exponent)
base^exponent처럼 base 에 exponent를 제곱한 값을 반환
Math.pow(3,2)
//9 (3^2)
Math.pow(2,4)
//16 (2^4)
Math.pow(-7,0.5)
//NaN