Programmers/Lv. 1

[Kotlin] Programmers Lv. 1 정수 제곱근 판별

chattymin 2023. 8. 16. 15:56
728x90
반응형

https://school.programmers.co.kr/learn/courses/30/lessons/12934

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

Code


import kotlin.math.sqrt
class Solution {
    fun solution(n: Long): Long {
        var temp = sqrt(n.toDouble()).toLong()

        return if (temp * temp == n) (temp+1) * (temp+1) else -1 
    }
}

정수 n이 주어졌을 때, 해당 숫자가 특정 숫자의 제곱인지 확인하는 문제다.

가장 쉬운 방법은 1부터 n까지 숫자를 늘려가며 제곱근을 찾는 방법이 있지만, 너무 무식하고 느리다.

 

그래서 n에 루트를 씌우고 해당 값이 정수인지 판별하고자 했지만, 해당하는 함수가 없었다. 그래서 직접 구현하려 했지만 추후 연산과정에 불필요한 연산이 많이 늘어나게 되어 사용하지 않았다.

 

결국 n에 루트를 씌운 값을 구하고 toLong을 사용해 Long타입으로 만든 값을 temp라는 변수에 저장해줬다. 그 후 temp * temp가 n과 같은지 판별하는 과정을 통해 tem가 n의 제곱근인지 판별했다.

 

맞다면 (temp+1) * (temp+1)을, 틀리면 -1을 리턴했다.

 
728x90
반응형