코드카타 - 정수 제곱근 판별
2024. 5. 30. 20:20ㆍ코드카타(CodeKata)
문제 설명
임의의 양의 정수 n에 대해, n이 어떤 양의 정수 x의 제곱인지 아닌지 판단하려 합니다.
n이 양의 정수 x의 제곱이라면 x+1의 제곱을 리턴하고, n이 양의 정수 x의 제곱이 아니라면 -1을 리턴하는 함수를 완성하세요.
제한 사항
n은 1이상, 50000000000000 이하인 양의 정수입니다.
입출력 예
n return
121 144
3 -1
입출력 예 설명
입출력 예#1
121은 양의 정수 11의 제곱이므로, (11+1)를 제곱한 144를 리턴합니다.
입출력 예#2
3은 양의 정수의 제곱이 아니므로, -1을 리턴합니다.
풀이
import kotlin.math.*
class Solution {
fun solution(n: Long): Long {
var answer: Long = 0
var x : Long = 0
var x2 : Int = 0
if (n >= 1 && n <= 50000000000000){
x = sqrt(n.toDouble()).toLong()
println(x)
x2 = sqrt(n.toDouble()).toInt()
println(x2)
if ((sqrt(n.toDouble()) % 1.toDouble()) == 0.toDouble()) {
answer = ((x+1)*(x+1)).toLong()
} else {
answer = -1
}
}
return answer
}
}
유의사항
- int형과 long형의 차이
(1) int형
- 메모리 크기: 32비트 (4바이트)
- 값의 범위: -2,147,483,648 ~ 2,147,483,647
- int는 주로 작은 범위의 정수를 다룰 때 사용됩니다. 일반적인 경우 int가 충분히 큰 범위를 제공하지만,
매우 큰 숫자를 다루거나 정수 오버플로우를 피해야 하는 상황에서는 long을 사용
(2) long형
- 메모리 크기: 64비트 (8바이트)
- 값의 범위: -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807
'코드카타(CodeKata)' 카테고리의 다른 글
코드카타 - 하샤드 수 (0) | 2024.06.05 |
---|---|
코드카타 - 정수 내림차순으로 배치하기 (0) | 2024.06.05 |
코드카타 - 문자열을 정수로 바꾸기 (0) | 2024.05.30 |
코드카타 - 자연수 뒤집어 배열로 만들기 (0) | 2024.05.30 |
코드카타 - x만큼 간격이 있는 n개의 숫자 (0) | 2024.05.29 |