문제 풀이/프로그래머스 알고리즘

정수 제곱근 판별

열심히 해 2024. 9. 26. 22:35

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

 

프로그래머스

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

programmers.co.kr

 

실행 시간 초과로 오답.... 

 

 

정답 1 :

더보기
class Solution {
    public long solution(long n) {
        long answer = -1;
        long x=0;
        while ( x * x != n) {
            if (++x * x == n) {
                return n + 2*x +1;
            }
            if (x >= n) {
                return -1;
            }
        }
        return answer;
    }
}

 

정답 2 : 

 

더보기
public class SquareCheck {
    public static int checkAndReturn(int n) {
        // n이 양의 정수인지 확인
        if (n <= 0) {
            return -1;
        }

        // x를 찾기 위해 제곱근을 계산
        int x = (int) Math.sqrt(n);

        // x의 제곱이 n과 같은지 확인
        if (x * x == n) {
            // x + 1의 제곱을 리턴
            return (x + 1) * (x + 1);
        } else {
            // n이 제곱수가 아니면 -1 리턴
            return -1;
        }
    }

 

 

Math.sqrt() 

 

더보기

Math.sqrt()는 Java의 Math 클래스에 포함된 정적 메소드로, 주어진 숫자의 제곱근을 계산하여 반환합니다.

double result = Math.sqrt(double a);

 

  • 매개변수: a는 제곱근을 구하고자 하는 숫자입니다. 이 값은 double 타입이어야 하며, 0 이상의 값을 가져야 합니다.
  • 반환값: a의 제곱근을 반환합니다. 만약 a가 음수인 경우, 결과는 NaN(Not a Number)이 됩니다.

예시:

public class SquareRootExample {
    public static void main(String[] args) {
        double sqrt1 = Math.sqrt(16);
        System.out.println(sqrt1); // 4.0

        double sqrt2 = Math.sqrt(20);
        System.out.println(sqrt2); // 약 4.472

        double sqrt3 = Math.sqrt(-4);
        System.out.println("The square root of " + num3 + " is " + sqrt3); // NaN
    }
}

 

 

유의 사항: 

 

  • 음수 처리: Math.sqrt()에 음수를 전달하면 NaN을 반환하므로, 입력값이 음수인지 사전에 확인해야 합니다.
  • 정수 제곱근: 결과는 항상 double 형식으로 반환됩니다. 만약 정수 제곱근을 원한다면, 결과를 int로 변환할 수 있지만, 이 경우 소수점 이하 부분은 버려집니다.