[プログラマーレベル1]整数平方根判別問題を解く



に質問


任意の正の整数nについて、nがある正の整数xの二乗であるか否かを判断しようとする.
nが正の整数xの平方である場合、x+1の平方を返し、nが正の整数xの平方でない場合、-1を返す関数を完了する.

せいげんじょうけん

  • nは正の整数で、1より大きく、5000000000000未満です.
  • 🖨️ I/O例



    💡 に答える

    class Solution {
        public long solution(long n) {
            Double sqrt = Math.sqrt(n);
    
            if(sqrt == sqrt.intValue()) {
                sqrt++;
                return (long)(sqrt * sqrt);
            } else return -1;
        }
    }

    ✏️ comment

  • 平方根を求める方法Math.sqrt()
  • の値が整数かどうかを判断するには、次の手順に従います.
  • Double sqrt = Math.sqrt(n);
    // Double wrapper class에 있는 intValue()로 정수형 숫자로 바꿈
    // 바꾸기 전 숫자와 바꾼 후 숫자가 같으면 정수
    if(sqrt == sqrt.intValue())
  • 平方の方法を求めますMath.pow(a, b)aのb次方