TIL | [알고리즘] 정수 제곱근 판별 (Java)

hyemin·2022년 3월 15일
0

알고리즘

목록 보기
25/38
post-thumbnail

THINKING

  1. i * i == n일 때까지 반복문 돌리기 - for
  2. 조건 충족 여부에 따라 반환값 나누기 - if
    • 조건 충족 - (i + 1) * (i + 1) 반환
    • 조건 미충족 - -1 반환

++ 제곱근을 구하는 함수가 있다면 좋겠다고 생각했지만, 일단 검색하지 않고 내가 알고 있는 것들로 문제를 풀어보려고 했다.

내 풀이

class Solution {
    public long solution(long n) {
        long answer = 0;
        
        for (long i = 1; i <= n; i++) {
            if (i * i == n) {
                answer = (i + 1) * (i + 1);
                break;                
            } else answer = -1;            
        }        
        return answer;
    }
}

다른 풀이

class Solution {
    public long solution(long n) {
        long sqrt = (long) Math.sqrt(n);
        
        if (sqrt * sqrt == n) {
            return (sqrt + 1) * (sqrt + 1);
        }      
        return -1;
    }
}

"자바 제곱급 구하기"를 검색하니 Math.sqrt() 메소드가 남와서 이 메소드를 이용하여 풀어보았다.

좋아요 많이 받은 풀이

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

배운 것

Math 클래스

수학에서 자주 사용하는 상수드로가 함수들을 미리 구현해 놓은 클래스이다. Math 클래스는 static method라 객체를 생성하지 않고도 사용이 가능하다.

사용법

// 제곱근
Math.sqrt(25); // 5

// a^b
Math.pow(5, 2);	// 25

// 난수 생성 
(int)(Math.random() * 100);	// 0 ~99

// 절댓값
Math.abs(-17);	// 17

// 최댓값/최솟값
Math.max(1.1, 1.1419);	// 1.1419
Math.min(-7, -11);	// -11

0개의 댓글

관련 채용 정보