본문 바로가기
카테고리 없음

정수 제곱근 판별 / 프로그래머스 연습문제 / programmers / level1 / Java

by RUCKUS 2021. 8. 2.

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

 

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

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

programmers.co.kr


이번 문제는 제곱근인지 아닌지 확인하는 건데, 사실 직접 풀면 수학적 난이도가 그렇게 높은 부분은 아니다.

하여 금방 풀 수 있을 줄 알았는데... 자바의 기본을 잠시 망각하면 풀기가 애매할 수도 있게 된다.

실제로 푸는 방법은 알겠는데, 그것 때문에 조금 애를 먹었다 ㅠ 역시 모든 문제는 이유가 있는 법!

 

자바의 메소드 중 하나인 Math.pow와 Math.sqrt 를 이용하면 편하게 구현이 가능하다.

(시간이 넘치시는 분들은 저 메소드를 직접 구현해봐도 재밌기는 할 듯??)

 

Math.pow(a, b) = 숫자 a를 b만큼 제곱해준 값을 리턴한다.

Math.sqrt(n) = n의 제곱의 숫자를 리턴한다.

 

[작성코드]

import java.lang.Math;

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

long타입을 너무 안써버릇해서... long타입으로 해야한다는 것을 계속 망각하고 있었다. 제한사항에 보면 

  • n은 1이상, 50000000000000 이하인 양의 정수입니다.

라고 적혀있는데 말이야... 이런 바보같은 ㅠㅠ 역시 기본은 너무 중요하다. 끝.

 

 


[깃허브링크]

https://github.com/RUCKUSJERRY/practiceOfAlgorithm/blob/main/Prs_Pratice/src/com/level01/GetSqrt.java

 

GitHub - RUCKUSJERRY/practiceOfAlgorithm

Contribute to RUCKUSJERRY/practiceOfAlgorithm development by creating an account on GitHub.

github.com