[programmers/CodingTest/Python]整数平方根の判別


問題の説明


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

せいげんじょうけん

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

    n	return
    121	144
    3	-1
    I/O例説明
    I/O例#1
    121は正の整数11の二乗であるため、144に(11+1)を乗算する.
    I/O例#2
    3は、正の整数の二乗ではないため、-1を返します.

    方法


    この問題はPythonのmathからsqrtを持ってきて解決した.sqrtは平方根で除去された関数である.このときfloat形式で平方根を提供し,この平方根のis integer()により整数にできるか否かを判断し,整数にできれば平方根に1を加えて平方根を解答とし,整数にならなければ1を解答とする.
  • の正解を格納する変数解答を0として定義する.
  • nの平方根が整数である場合、nの平方根+1の平方根を答えに代入する.
  • を除き,答えに−1を代入する.
  • の答えを返します.
  • solution.py

    from math import sqrt
    def solution(n):
        answer = 0
        if sqrt(n).is_integer():
            answer=(sqrt(n)+1)**2
        else:
            answer=-1
        return answer