https://school.programmers.co.kr/learn/courses/30/lessons/12934
임의의 양의 정수 n에 대해, n이 어떤 양의 정수 x의 제곱인지 아닌지 판단하려 합니다.
n이 양의 정수 x의 제곱이라면 x+1의 제곱을 리턴하고, n이 양의 정수 x의 제곱이 아니라면 -1을 리턴하는 함수를 완성하세요.
제한 사항
- n은 1이상, 50000000000000 이하인 양의 정수입니다.
class Solution {
public long solution(long n) {
long answer = (long)Math.sqrt(n);
if(Math.pow(answer,2)==n) {
return (long)Math.pow(answer+1,2);
}else{
return -1;
}
}
}
Math.sqrt(n) : 제곱근을 구하는 함수(double 타입), 음수를 넣으면 NaN이 리턴됨
ex) Math.sqrt(4) -> 2
Math.sqrt(9) -> 3
제곱근 : 수학에서, 어떤 수의 제곱근은 제곱하여 그 수가 되는 수를 가리킨다. 실수의 범위에서만 보면, 모든 양의 실수는 서로 덧셈 역원인 두 제곱근을 가지며, 이 중 음이 아닌 하나를 주요 제곱근이라고 한다. (출처 : 나무위키)
Math.pow(n,x) : 제곱함수(double 타입) ,
ex) Math.pow(2,2) -> 2의 2제곱 -> 4
Math.pow(2,4) -> 2의 4제곱 -> 16
양의 정수 n을 받아 제곱근을 구해서 long타입인 asnwer변수에 저장, Math.sqrt()의 기본값은 double 이기 때문에 형변환(long)을 해준다 (long answer = (long)Math.sqrt(n))
만약 변수answer 의 제곱이 (Math.pow(answer,2)) 양의 정수 n과 같다면 if(Math.pow(answer,2)==n)
n이 양의 정수 x의 제곱이라면 x+1의 제곱을 리턴을 하라고 했으니 (return (long)Math.pow(answer+1,2))
n이 양의 정수 x의 제곱이 아니라면 -1을 리턴하라고 했으니 다른 경우엔 -1을 리턴 (return -1;)
'프로그래머스 문제풀어보기' 카테고리의 다른 글
[Lv.0] 문자열 내 p와 y의 개수 (0) | 2022.10.12 |
---|---|
[Lv.0] 자연수 뒤집어 배열로 만들기 (0) | 2022.10.11 |
[Lv.0] 자릿수 더하기 (2) | 2022.10.08 |
[Lv.0] 약수의 합 (0) | 2022.10.06 |
[Lv.0] 평균 구하기 (0) | 2022.10.06 |
댓글