정수 제곱근 판별(Javascript)

·2022년 9월 14일
0
post-thumbnail

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

제한 사항

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

nreturn
121144
3-1

입출력 예 설명

입출력 예#1
121은 양의 정수 11의 제곱이므로, (11+1)를 제곱한 144를 리턴합니다.

입출력 예#2
3은 양의 정수의 제곱이 아니므로, -1을 리턴합니다.

나의 풀이

풀었던 것 중에 가장 쉬운 유형인 듯 하다.

function solution(n) {
    var answer = 0;
    if (Number.isInteger(Math.sqrt(n))){
      //Math.sqrt로 제곱근을 구한 다음 isInteger로 정수인지 판별
      //n이 양의 정수이므로 어떤 수의 제곱근이라면 자연수가 나올 것이다. 
        answer = (Math.sqrt(n) +1)**2;}
  	  //자연수라면 제곱근 한 수에 1을 더한 후 2의 거듭제곱으로 만들어 준다. 
    else
        {answer = -1}
  	//아니라면 -1 인출
    return answer;
}

참고할 풀이

return Math.sqrt(n)%1==0?(Math.sqrt(n)+1)**2:-1
//제곱근으로 나눴을 때 나머지가 0이라면 (x+1)의 제곱, 아니라면 -1 리턴

if 대신에 조건?A:B구문을 써 줬다. 조건이 참이라면 A, 거짓이라면 B를 인출해 준다. if 대신에 이 구문으로 간략하게 쓰는 연습을 좀 해야겠다.

if 대신에 case를 쓴 형태도 있었다. 나는 ** 을 사용해서 제곱으로 만들어 줬지만 Math.pow()형태를 써도 제곱으로 만들 수 있었다.

profile
전 이것도 몰라요

0개의 댓글

관련 채용 정보