[프로그래머스] 정수 제곱근 판별

만분의 일·2022년 1월 19일
0

Algorithm Archive

목록 보기
4/5
post-thumbnail

문제 설명

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

제한 사항

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

입출력 예

1. n:121일 때 144를 return 해준다.

  • 121의 제곱근은 11, (11+1)를 제곱한 144를 리턴합니다.

2. n:3일 때 -1을 return 해준다.

  • 3은 양의 정수의 제곱이 아니므로, -1을 리턴합니다.

풀이

#1. 정수 n의 제곱근을 구하자 => Math.sqrt()사용

  • Math.sqrt() : 제곱근을 구해주는 math메소드.(루트를 씌워주는 것과 같다)
    • Math.sqrt(4); // 2 출력
    • Math.sqrt(16); // 4 출력
    • Math.sqrt(100); // 10 출력
    • Math.sqrt(2); // 1.414213562373095
    • Math.sqrt(-1); // NaN

#2. 양의 정수가 아닌 경우 -1 return
#3. 이외의 경우 (제곱근+1)^2의 값 return

코드

function solution(n) {
    var answer = 0;
    
    if(Math.sqrt(n) % 1 !==0){	//n의 제곱근을 구한다. Math.sqrt()사용
        answer = -1;	// n의 제곱근을 1로 나눴을 때 나머지 값이 0이 아니면 실수이기 때문에  "-1" return
    }   else{
        answer= (Math.sqrt(n)+1)*(Math.sqrt(n)+1);	// (제곱근+1)을 제곱 
    }
    return answer;
}

다른 풀이

profile
1/10000이 1이 될 때 까지

0개의 댓글