어떤 자연수를 제곱했을 때 나오는 정수를 제곱수라고 합니다.
정수n
이 매개변수로 주어질 때,n
이 제곱수라면 1을 아니라면 2를 return하도록 solution 함수를 완성해주세요.
- 1 ≤
n
≤ 1,000,000
n result 144 1 976 2
입출력 예 #1
- 144는 12의 제곱이므로 제곱수입니다. 따라서 1을 return합니다.
입출력 예 #2
- 976은 제곱수가 아닙니다. 따라서 2를 return합니다.
function solution(n) { return Math.sqrt(n) % 1 === 0 ? 1 : 2 }
가장 중요한 것
- 제곱수를 판별해야한다.
그 다음으로 든 생각
- 이것도 역시
Boolean
값 ? true : false / 1 : 2 반환하는 것을 사용하자.- 제곱근을 구하기 위해선 n을 무한히 나눠줘야한다.
- 무한히 나눠주는것은 끝이 없다, 다른 해법은 없을까?
- 그렇다면
Math.sqrt()
라는 함수를 사용해보자.
function solution(n) { const result = Math.pow(n, 0.5); if (Number.isInteger(result)) { return 1; } else { return 2; } }
배워둬야 할 것
Math.pow()
: 첫 번째 매개변수를 두 번째 매개변수로 제곱하는 역할을 하는 함수.
Math.sqrt()
가 제곱근을 구한다면,Math.pow()
는 거듭제곱을 한다.
=> 이게 왜 다른건가?isInteger
: 주어진 값이 정수인지 여부를 확인하는 메서드.
- Why? : 부동 소수점 숫자와 정수를 구별하기 위해서입니다.