알고리즘 공부/프로그래머스

프로그래머스 코딩테스트 연습 - 연습문제 - 정수 제곱근 판별

HRuler 2020. 10. 6. 20:48

1. 문제

문제 설명

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

제한 사항

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

2. 나의 풀이

class Solution {
    public long solution(long n) {
        long answer = 0;
		double imsi = Math.sqrt(n);
		double imsi1 = 0;
		for(int i = 0; i <= imsi; i = i + 1) {
			if(imsi == i) {
				imsi1 = i;
				break;
			}
		}
		if(imsi1 == 0) {
			answer = -1;
		}else {
			imsi1 = Math.pow(imsi1+1, 2);
			answer = (long)imsi1;
		}
		return answer;
    }
}

3. 다른 사람 풀이

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;
  }
}