Kotlin 문법 및 연습 문제

(Kotlin) 정수 제곱근 판별

돗개진 2024. 3. 5. 20:10

 

프로그래머스 연습 문제 - 정수 제곱근 판별

 

 

먼저 Kotlin에서 제곱식을 구현하려면 pow라는 함수를 사용해야 하는데 이는 Kotlin의 math 라이브러리에 존재한다. 따라서 math 라이브러리를 import 한다.

 

import kotlin.math.*

class Solution {
    fun solution(n: Long): Long {
        var sqrt = sqrt(n.toDouble())
        return if(sqrt % 1.0 == 0.0) { // 제곱근 판별
            (sqrt + 1).pow(2.0).toLong()
        } else {
            -1L
        }
    }
}

 

[ Kotlin 함수 간단 정리 ]

 

- pow()

: 인자를 받아 제곱 연산을 수행하며 Int를 인자로 받을 수 있으나 반환 자료형은 Double이다. 

(sqrt + 1).pow(2.0).toLong()

ㄴ> 문제를 풀 때 pow 함수가 사용된 부분이다. sqrt + 1, 즉 제곱근에 1을 더한 값을 제곱한 후 toLong() 반환 타입을 Long으로 변경하는 코드다.

 

- sqrt()

: 제곱근 연산을 수행하며 인자로는 Double이나 Float를 받는다. 따라서 제곱근을 계산하려는 숫자는 실수 타입이어야 하며 반환 타입은 pow 함수와 마찬가지로 Double이다.

var sqrt = sqrt(n.toDouble())

ㄴ> 마찬가지로 문제를 풀 때 sqrt 함수가 사용된 부분이다. n을 Double로 형변환하여 계산하며 sqrt 라는 변수에 n의 제곱근을 넣는다.

 

-cbrt()

sqrt와 마찬가지로 Double 혹은 Float를 인자로 받으며 세제곱근 연산을 수행한다. 반환형은 Double이다.

println(cbrt(8.0)) // 2.0 출력

ㄴ> 위 코드는 이번 문제를 푸는 데 사용되지 않았지만 pow() 와 sqrt() 함수를 찾아보다 알게 된 함수이다.