문제

 

 

나의 풀이

function solution(n) {
  let num = Math.pow(n, 0.5);

  return Number.isInteger(num) ? Math.pow(num + 1, 2) : -1;
}

 

 

KEY POINT : Math.pow(), isInteger()

Math.pow(base, exponent)

base: 밑 값, 거듭제곱에서 곱한 수

exponent: 제곱지수

 

Number.isInteger()

주어진 값이 정수인지 판별

 

거듭제곱을 구한 수의 0.5제곱은 원래 값이라 생각하여 n에 0.5제곱한 값을 변수에 담아 제곱근을 구했다.

그 제곱근에 +1을 한상태로 거듭제곱을 한 값을 구한다. 여기서 그 제곱을 한 값이 정수일경우 제곱을 하고, 실수일 경우 -1을 도출하면 끝.

제곱근을 구하는 방법만 알면 쉽게 풀렸던 문제였다고 생각한다.

 

 

 

 다른 사람 풀이방식

function nextSqaure(n){
  //함수를 완성하세요
  switch(n % Math.sqrt(n)){
    case 0:
      return Math.pow(Math.sqrt(n) + 1, 2);
    default:
      return "no"
  }
}

 

평소에 잘 사용하지않던 switch문을 사용하여 해결하신 코드를 들고 와보았다.

sqrt함수는 함수는 숫자의 제곱근을 반환한다. 제곱이 이루어진 수를 가지고와서 나누어진 값이 0 일경우 (true =0, false=1 을 사용한걸까? 추측) 

case 0으로 넘어가고 그렇지않으면 "no"

pow()함수에도 제곱근을 구하는 방법이 있었지만 조금더 간편하게 구할 수 있는 sqrt함수를 사용하셨기에 글쓴이에겐 좋은 참고가 되었다.

 

'코딩테스트 입문' 카테고리의 다른 글

콜라츠 추측  (0) 2022.11.21
제일 작은 수 제거  (0) 2022.11.21
정수 내림차순으로 배치하기  (0) 2022.11.21
자연수 뒤집어 배열로 만들기  (0) 2022.11.21
자릿수 더하기  (0) 2022.11.21

+ Recent posts