먼저 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() 함수를 찾아보다 알게 된 함수이다.
'Kotlin 문법 및 연습 문제' 카테고리의 다른 글
Kotlin - 비동기 프로그래밍 (쓰레드, 코루틴) (2) | 2024.03.12 |
---|---|
(Kotlin) 나누어 떨어지는 숫자 (0) | 2024.03.07 |
(Kotlin) 하샤드 수 구하기 (0) | 2024.03.05 |
(Kotlin) 프로그래머스 문제 설명의 제한 조건 의미 (0) | 2024.03.05 |
(Kotlin) 자연수를 뒤집어 배열로 만들기 (0) | 2024.03.04 |