본문 바로가기
프로그래머스 문제풀어보기

[Lv.0] 정수 제곱근 판별

by dantriss 2022. 10. 10.

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

댓글