프로그래머스 기출문제 풀이

정수 제곱근 판별

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

  • 입력 : 121

  • 출력 : 144

  • 풀이

class Solution {
    public long solution(long n) {

        double param = n / (double)2.0;
        long div = 0L;
        while(param-(++div)>0) {
            param = param-(div);
        }
        if(div*div==n) return (div+1)*(div+1);
        else return -1;
    }
}
  • 정리
    • 제곱근 공식을 사용하여 간단히 풀수있을것이라 예상했으나 데이터 타입의 사용이 핵심이었던 문제

    • 최초 param의 형식을 float, div의 형식을 int로 지정하여 범위가 넘어가는 문제가 발생했다.
    • 사소한 디테일을 놓치면 안됨.

Updated: