[アルゴリズム]整数平方根を判別する
※この写真と投稿内容の問題は、ProgrammersのWebサイトから抜粋しています.
に質問 임의의 양의 정수 n에 대해, n이 어떤 양의 정수 x의 제곱인지 아닌지 판단하려 합니다.
n이 양의 정수 x의 제곱이라면 x+1의 제곱을 리턴하고,
n이 양의 정수 x의 제곱이 아니라면 -1을 리턴하는 함수를 완성하세요.
제한 조건 : n은 1이상, 50000000000000 이하인 양의 정수입니다.
<입출력 예>
n | return
121 | 144
3 | -1
<예 설명>
입출력 예#1
121은 양의 정수 11의 제곱이므로, (11+1)를 제곱한 144를 리턴합니다.
입출력 예#2
3은 양의 정수의 제곱이 아니므로, -1을 리턴합니다.
ほどく
My Code
def solution(n):
import math
sqrt = math.sqrt(n)
if (sqrt-int(sqrt)) != 0 :
answer = -1
else :
answer = int((sqrt+1)**2)
return answer
個人的にはモジュールを最大限に使いたくないのですが...長い間考えたあげく、解決策を意識せずにmathライブラリを使いました.sqrt()
関数の結果値出力はfloat(実数型)であるため、str(len(sqrt))
で区別することもできない.
したがって、int()
の関数を用いる整数部分の特性のみを抽出し、sqrt()
関数の結果値においてint()
関数の結果値の差を求めた後、小数点以下に値が存在する場合、残存値が存在するとみなし、−1を返すように設計されている.
説明する
(1)def nextSqure(n):
sqrt = n ** (1/2)
if sqrt % 1 == 0:
return int((sqrt + 1) ** 2)
return -1
虚無ですが、面白い公式を知っておけばよかったです.
平方根を求める方法は0.5平方根です.
また、このプールは計算後です.
1で割った残りの値(% 1 == 0
)
つまり、残っているかどうかを決めるしかない方法を使っています.(Sense…😆)**
も平方を求めることができますが.
mathライブラリのpow()
関数も平方値を求めることができます.
Reference
この問題について([アルゴリズム]整数平方根を判別する), 我々は、より多くの情報をここで見つけました
https://velog.io/@yummygyudon/알고리즘-정수-제곱근-판별
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
임의의 양의 정수 n에 대해, n이 어떤 양의 정수 x의 제곱인지 아닌지 판단하려 합니다.
n이 양의 정수 x의 제곱이라면 x+1의 제곱을 리턴하고,
n이 양의 정수 x의 제곱이 아니라면 -1을 리턴하는 함수를 완성하세요.
제한 조건 : n은 1이상, 50000000000000 이하인 양의 정수입니다.
<입출력 예>
n | return
121 | 144
3 | -1
<예 설명>
입출력 예#1
121은 양의 정수 11의 제곱이므로, (11+1)를 제곱한 144를 리턴합니다.
입출력 예#2
3은 양의 정수의 제곱이 아니므로, -1을 리턴합니다.
My Code
def solution(n):
import math
sqrt = math.sqrt(n)
if (sqrt-int(sqrt)) != 0 :
answer = -1
else :
answer = int((sqrt+1)**2)
return answer
個人的にはモジュールを最大限に使いたくないのですが...長い間考えたあげく、解決策を意識せずにmathライブラリを使いました.sqrt()
関数の結果値出力はfloat(実数型)であるため、str(len(sqrt))
で区別することもできない.したがって、
int()
の関数を用いる整数部分の特性のみを抽出し、sqrt()
関数の結果値においてint()
関数の結果値の差を求めた後、小数点以下に値が存在する場合、残存値が存在するとみなし、−1を返すように設計されている.説明する
(1)
def nextSqure(n):
sqrt = n ** (1/2)
if sqrt % 1 == 0:
return int((sqrt + 1) ** 2)
return -1
虚無ですが、面白い公式を知っておけばよかったです.平方根を求める方法は0.5平方根です.
また、このプールは計算後です.
1で割った残りの値(
% 1 == 0
)つまり、残っているかどうかを決めるしかない方法を使っています.(Sense…😆)
**
も平方を求めることができますが.mathライブラリの
pow()
関数も平方値を求めることができます.Reference
この問題について([アルゴリズム]整数平方根を判別する), 我々は、より多くの情報をここで見つけました https://velog.io/@yummygyudon/알고리즘-정수-제곱근-판별テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol