PS/LV.1 프로그래머스 문제

[프로그래머스] LV.1 정수 제곱근 판별 - 자바 [7/80]

yaho!! 2024. 7. 16. 22:55

💬 문제 설명

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

 

🚫 제한 사항

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

 

📢 입출력 예

 

👨‍🏫 입출력 예 설명

 

📃 제출 코드

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

 

✏ 해결방법 & 배운점

접근방법

  • 정수 `n`의 제곱근을 구한다.
  • 제곱근을 다시 제곱하여 원래 숫자 `n`과 같은지 확인한다.
  • 만약 제곱근의 제곱이 `n`과 같다면 제곱근에 1을 더한 후 그 값을 다시 제곱하여 새로운 값을 구한다.