[2020-11-18] 정수 제곱근 판별도움말

2020. 11. 18. 16:35코딩테스트

푼 시간 : 30분

언어 : 자바

 


 

programmers.co.kr/learn/courses/30/lessons/12934

 

코딩테스트 연습 - 정수 제곱근 판별

임의의 양의 정수 n에 대해, n이 어떤 양의 정수 x의 제곱인지 아닌지 판단하려 합니다. n이 양의 정수 x의 제곱이라면 x+1의 제곱을 리턴하고, n이 양의 정수 x의 제곱이 아니라면 -1을 리턴하는 함

programmers.co.kr

 

문제를 풀때 Math를 쓰기 싫어서 최대한 고민을 했었다.

그치만 제곱근을 찾을 방법이면서, 가장 빠른 방법은 sqrt를 쓰는 방법 밖에 없는 것 같아 썼다.

있을지는 모르겠지만 다음에는 안 쓰고 풀 수 있을만한 방법을 찾고싶다.

 

class Solution {
    public long solution(long n) {
        long answer = 0;
        double k=Math.sqrt((double)n);
        // long을 double로 바꿔준다.
        
        if((long)k*k==n)
        // sqrt로 제곱근을 바꾸고나서 정말 제곱근인지 확인
            answer=(long)((k+1)*(k+1));
        else
            answer=-1;
        
        return answer;
    }
}