임의의 양의 정수 n에 대해, n이 어떤 양의 정수 x의 제곱인지 아닌지 판단하려 합니다.
n이 양의 정수 x의 제곱이라면 x+1의 제곱을 리턴하고, n이 양의 정수 x의 제곱이 아니라면 -1을 리턴하는 함수를 완성하세요.
문제해석
정수 n이 있고, n이 x의 제곱인지 아닌지 판단
제곱이면 x+1의 제곱, 아니면 -1
• n은 1이상, 50000000000000 이하인 양의 정수입니다.
import kotlin.math.*
class Solution
{
fun solution(n: Long): Long
{
var x = sqrt(n.toDouble()).toLong()
if (x * x == n) (x + 1).toDouble().pow(2).toLong()
else -1
return x.toLong()
}
}
문제점
if 블록 내에서 계산한 값을 반환하지 않음
import kotlin.math.*
class Solution
{
fun solution(n: Long): Long
{
var x = sqrt(n.toDouble()).toLong()
return if (x * x == n) (x + 1).toDouble().pow(2).toLong()
else -1L
}
}
class Solution
{
fun solution(n: Long): Long
{
val x = Math.sqrt(n.toDouble())
return if(x % 1.0 == 0.0)
{
Math.pow(sqrt + 1, 2.0).toLong()
} else {
-1L
}
}
}
(sqrt % 1.0 == 0.0)정수 여부 확인
Double형으로 계산한 후 → 마지막에 Long으로 변환