정수 제곱근 판별

hanul kim·2022년 4월 2일
0

2022 CodingTest

목록 보기
5/29

0401

문제 설명

임의의 양의 정수 n에 대해, n이 어떤 양의 정수 x의 제곱인지 아닌지 판단하려 합니다.
n이 양의 정수 x의 제곱이라면 x+1의 제곱을 리턴하고, n이 양의 정수 x의 제곱이 아니라면 -1을 리턴하는 함수를 완성하세요.

제한 조건

  • n은 1이상, 50000000000000 이하인 양의 정수입니다.

입출력 예

nreturn
121144
3-1

기본 코드

class Solution {
    public long solution(long n) {
        long answer = 0;
        return answer;
    }
}

정답 코드

class Solution {
    public long solution(long n) {
        long answer = 0;
        answer = (long) Math.sqrt(n);
        if (n == (long) Math.pow(answer, 2)) {
            answer = (long) Math.pow(answer + 1, 2);
        } else
            answer = -1;
        return answer;
    }
}

문제 풀이

n을 Math.sqrt로 구한 제곱근 값을 answer에 대입한다.
if문에서 Math.pow를 통해 answer(n의 제곱근)을 제곱한 값과 n의 값이 같다면
문제에서 말하는 x+1의 제곱을 return한다. 아니라면 -1를 return.

  • Math.sqrt(수) > 인수를 전달하면 인수에 대한 제곱근 값을 return
  • Math.pow(대상숫자, 지수) > 대상숫자의 제곱 return
    (sqrt, pow의 type은 모두 double)
profile
학교 계정

1개의 댓글

comment-user-thumbnail
2022년 4월 3일

Math.pow()를 적절히 잘 써준 것 같아요! 멋지네요!

답글 달기