좌충우돌 개발공부

TIL(20240510) 코딩테스트 : 정수 제곱근 판별


🔒 문제

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

💡 필요했던 메서드

  1. Math.pow(double a, double b) -> a의 b승 a를 b번 곱한 값을 리턴한다. ** 형변환 가능 예를들어 (int)Math.pow(2.3, 2)
  2. Math.sqrt(double a) -> a의 제곱근을 반환한다.

🔓 문제풀이

class Solution {
    public long solution(long n) { 
        long answer = 0;
        long x = (long)Math.sqrt(n); // n의 제곱근 구하기 위해 타입변환
        if(n == Math.pow(x,2)){  // 제곱근x의 2승이 n과 같다면 
            answer = (long)Math.pow(x+1,2); // answer은 제곱근 +1 의 2승이다.
        } else {
           answer = -1;
        }
        return answer;
    }
}

🤷‍♀️ 문제풀이를 하면서 느낀점

: 사실 문제를 어떻게 풀어야 할 지 막막했다. 그래서 결론은 내가 풀지는 못했다. 최대한 다른사람의 풀이를 보지 않으려고 노력하고 내가 할 수 있는 부분까지는 혼자서 하고 나머지는.. 다른사람의 풀이를 참고하여 수정하고 제출했다. 새로운 메서드에서 대해서 알게되었고, (Math.sqrt()와 Math.pow()메서드) 다음 기회에 비슷한 문제를 만난다면 내가 풀어볼 수 있을 것 같다.