Kotlin 제곱근 이용법 with 프로그래머스 19번 정수 제곱근 판별

박미소·2024년 1월 2일
0

코틀린

목록 보기
18/44

코틀린에서 제곱 연산을 하려면 kotlin.math 패키지의 pow 연산을 쓰면 된다. pow 연산은 Double, Float 두 가지 자료형만 지원된다.


  • Double 자료형 제곱 연산
fun Double.pow(x: Double): Double
fun Double.pow(n: Double): Double

println(2.0.pow(3.0))    // 8.0
println(2.0.pow(3))      // 8.0

  • Float 자료형 제곱 연산

Float 자료형은 Float이나 Int를 인자로 받아 제곱 연산을 수행하며 반환 자료형은 모두 Float이다.

fun Float.pow(x: Float): Float
fun Float.pow(n: Int): Float


println(2.0f.pow(3.0f)) // 8.0
println(2.0.pow(3))	   // 8.0

  • Int로 제곱 연산하기
println(2.toDouble().pow(3))  // 8.0

  • sqrt 함수 이용법
println(sqrt(4.0))    // 2.0

  • pow 함수 이용법

제곱(pow) 연산을 활용해 제곱근, 세제곱근도 구할 수도 있다. 1/2, 1/3 제곱 연산으로 수행 가능

val number = 4.0
val squareRoot = number.pow(1.0 / 2.0)  // 2
val number = 27.0
val cubeRoot = number.pow(1.0 / 3.0)   // 3



import kotlin.math.*

class Solution {
    fun solution(n: Long): Long {
        val i = sqrt(n.toDouble()).toLong()
        if(i*i == n) {
            return (i+1).toDouble().pow(2).toLong()
        } 
        return -1
    }
}

코틀린의 수학 함수를 쓰기 위해서 import kotlin.math.*

제곱근 함수 sqrt를 쓰기 위해서 toDouble로 자료형 변환해서 n을 제곱근 하고 다시 원래의 자료형 toLong으로 변환.

n의 제곱근 i가 제곱이 되었을때 n과 같으면 ( i+1 ) ** 2가 되도록 코틀린의 문법으로 풀어서,

pow를 쓰기 위해 toDouble로 변환해서 pow() 사용하고 다시 원래의 toLong으로.

아니면 -1 반환.



다른 사람의 풀이

class Solution {
    fun solution(n: Long): Long {
        val a = sqrt(n.toDouble()).toLong()
        return if (a * a == n) (a + 1)*(a + 1) else -1
    }
}

class Solution {
    fun solution(n: Long): Long {
        val sqrt = sqrt(n.toDouble())
        return if(sqrt % 1.0 == 0.0) {
            (sqrt + 1).pow(2.0).toLong()
        } else {
            -1L
        }
    }
}




참고:
https://stackoverflow.com/questions/47846653/unresolved-reference-sqrt-kotlin

https://kotlinworld.com/439

https://hkoonsdiary.tistory.com/107

https://wise-99.tistory.com/33

0개의 댓글