개발 공부

프로그래머스 정수 제곱근 판별 Java 본문

코딩 테스트

프로그래머스 정수 제곱근 판별 Java

hyecozy 2022. 7. 29. 17:56

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

 

프로그래머스

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

programmers.co.kr

 

 

class Solution {
    public long solution(long n) {
        long answer = -1;
        double x = Math.sqrt(n);
        
        if(x == (int)x){
            answer = (long)(Math.pow(x + 1, 2));
        }
        
       return answer; 
    }
}

➡️Math 함수 활용

Math.sqrt(n)

: n의 제곱근을 구하는 메서드. 결괏값이 double로 나오기 때문에 자료형을 double로 해서 변수를 생성해야 함

Math.pow(밑값, 지수 값)

: 밑값을 지수값만큼 곱한 값을 내어준다. double로 나오기 때문에 이 문제에서는 long으로 형변환을 해줘야 함

➡️n의 제곱근이 double, 즉 양의 정수가 아닐 경우도 있기 때문에, if문으로 양의 정수로 나올 경우를 따로 뽑아낸다.

x를 int로 형변환 하면 정수값만 나오니까, 그 정수값과 x값이 같은지 체크하면 양의 정수를 제곱근으로 갖는 경우만 골라낼 수 있다.

 

😂 위의 함수를 쓰지 않고 실행했을 때, 몇몇 테스트는 시간 초과로 통과하지 못했다.

for문으로 제곱근을 구하려고 했었기 때문....ㅎㅎ Math에 들어있는 함수 몇 개는 미리 알아두는 게 좋은 것 같다.

 

 

https://www.tutorialspoint.com/java/lang/math_sqrt.htm

https://www.tutorialspoint.com/java/lang/math_pow.htm

Comments