내 맘대로 공부
article thumbnail

Q. 어떤 자연수를 제곱했을 때 나오는 정수를 제곱수라고 합니다. 정수 n이 매개변수로 주어질 때, n이 제곱수라면 1을 아니라면 2를 return하도록 solution 함수를 완성해주세요.

 

ex) 입출력 예시

n result
1234 10
930211 16

 


Thinking Process

일단 정수 n의 약수들을 알아야 하니까 for 구문을 돌면서 약수들을 구하고 그 중에서 제곱을 해서 정수 n 이 되는 값이 있으면 빈 배열에 넣고 이 배열의 길이 값이 0이면 2 아니면 1을 출력하면 되겠다 !

 

 

Code

function solution(n) {
  let arr = [];

  for (let i = 1; i < n; i++) {
    if (n % i === 0 && i * i === n) {
      arr.push(i);
    }
  }

  if (arr.length > 0) {
    return 1;
  } else {
    return 2;
  }
}

 

 

Another Code 

function solution(n) {
    return Number.isInteger(Math.sqrt(n)) ? 1 : 2;
}

 

레전드 물론 내 풀이도 맞지만 다른 사람의 풀이를 보니까 저렇게 간단하게 풀 수 있었다.

코드 해석을 하자면 n의 제곱근을 구하고 이 값이 integer면 1을 출력하도록 한다.

만일 n이 144면 12로 딱 떨어져 1이 출력되고, n이 976이면 31.xxxxx float 형태로 나오니 2가 출력될 것이다.

 

profile

내 맘대로 공부

@곰도리도리잼

잘못된 정보가 있다면 알려주세요 🧸