정수 제곱근 판별

Anna·2024년 6월 19일

코딩테스트

목록 보기
12/28
post-thumbnail

📖 문제

임의의 양의 정수 n에 대해, n이 어떤 양의 정수 x의 제곱인지 아닌지 판단하려 합니다.

n이 양의 정수 x의 제곱이라면 x+1의 제곱을 리턴하고, n이 양의 정수 x의 제곱이 아니라면 -1을 리턴하는 함수를 완성하세요.

문제해석

정수 n이 있고, n이 x의 제곱인지 아닌지 판단
제곱이면 x+1의 제곱, 아니면 -1

📖 제한 조건

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


👻 내 풀이

👻 1차 풀이

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 블록 내에서 계산한 값을 반환하지 않음

👻 2차 풀이

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으로 변환

0개의 댓글