본문 바로가기
Language/알고리즘 문제풀이

프로그래머스 정수 제곱근 판별 풀이(Java)

by wakestand 2019. 9. 5.
반응형

사이트명 : 프로그래머스(Programmers)

문제명 : 정수 제곱근 판별

언어 : 자바(Java)

 

정수 제곱근 판별 문제는

받은 n 숫자가 특정 숫자의 제곱인지 확인하고

제곱일 경우에는 n+1 숫자의 제곱을 구한 뒤 반환하면 되고

특정 숫자의 제곱이 아니라면 -1를 넣어 반환하면 된다

 

내 풀이방법은 아래와 같은데

 

먼저 정직하게 for 문을 돌려가며

n 값이 특정 수의 제곱인가를 판별하면 시간제한에 걸려서 망한다

 

Math.sqrt(값) 을 사용하면 무슨 값을 제곱했을 시 값이 나오게 되는지를 반환하는데

여기에 +1을 해 주고 (long) 타입으로 변환해주면 실제 제곱근이 몇인지 판별이 가능하다

long으로 형변환을 안해주면 판별이 불가능하므로 꼭 해줘야 한다

 

그래서 제곱근을 구한 뒤 제곱근끼리 한번 곱해줬을 시 n 값이 나오면

n에 +1을 해 줘서 그 제곱을 구한 후 반환하고

그렇지 않을 경우에는 -1을 넣어 반환한다

 

프로그래머스에 바로 적용 가능한 답안 코드는 아래와 같다

 

class Solution {
  public long solution(long n) {
	      long answer = 0;
	      
	      if((long)Math.sqrt(n) * (long)Math.sqrt(n) == n) {
	    	  answer = ((long)Math.sqrt(n) + 1) * ((long)Math.sqrt(n) +1);
	      } else {
	    	  answer = -1;
	      }; 
	      
	      return answer;
  }
}
반응형

댓글