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

seren-dev·2022년 5월 2일

Programmers Lv.1

목록 보기
5/15

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

나의 풀이
0.03ms

class Solution {
    public long solution(long n) {
        double sqrt = Math.sqrt(n);
        long i = (long)sqrt;

        if (sqrt - i == 0)
            return (i + 1) * (i + 1);
        else
            return -1;
    }
}
  • Math.sqrt(n) 를 사용하여 제곱근을 구함
  • 구한 제곱근의 (long)을 하여 정수부 추출
  • 제곱근 - 정수부 = 소수부
  • 소수부와 0을 비교

다른 사람의 풀이
0.3ms (조금 더 느림)

class Solution {
    public long solution(long n) {
        double sqrt = Math.sqrt(n);
        
        return Math.floor(sqrt) == sqrt ? (long)Math.pow(sqrt+1, 2) : -1;
    }
}
  • 따로 정수부를 추출하지 않고 Math.floor(sqrt) == sqrt로 정수의 제곱근을 판별
  • 삼항 연산자 사용

0개의 댓글