정수 제곱근 판별

이보아·2024년 5월 3일
0

문제

의사코드

  1. 제곱근으로 변환 한다.
  2. 제곱근을 구하면 삼항 연산자 또는 if문을 이용해서 리턴값을 다르게 준다.

위의 의사코드에서 간과한 부분이 있었다 ... 정수인지 확인해주는 함수가 필요한데 그부분을 문제를 풀면서 필요하다 생각하여 의사코드를 수정하였다.

수정된 의사코드

  1. 제곱근으로 변환 한다.
  2. 정수인지 확인 한다.
  3. 제곱근을 구하면 정수인지 삼항 연산자 또는 if문을 이용해서 확인후 리턴값을 다르게 준다.

코드 작성에 앞서

코드를 작성하면서 의사코드를 작성하면서 필요한 기능들을 구현하기위해 필요한 Math.sqrt(), Number.isInteger(), Math.pow()들이 기억나지 않아 구글링하여 정리하였다.

Math.sqrt()

Math.sqrt() 함수는 숫자의 제곱근을 반환합니다.

Math.sqrt(9); // 3
Math.sqrt(2); // 1.414213562373095

Math.sqrt(1); // 1
Math.sqrt(0); // 0
Math.sqrt(-1); // NaN

Number.isInteger()

Number.isInteger() 메서드는 주어진 값이 정수인지 판별합니다.

function fits(x, y) {
  if (Number.isInteger(y / x)) {
    return '정수임!';
  }
  return '정수 아님!';
}

console.log(fits(5, 10));
// Expected output: "정수임!"

console.log(fits(5, 11));
// Expected output: "정수 아님!"

Math.pow()

Math.pow()함수는base^exponent처럼 base 에 exponent를 제곱한 값을 반환합니다.

console.log(Math.pow(7, 2));
// 결과 : 49

console.log(Math.pow(4, 0.5));
// 결과 : 2

console.log(Math.pow(-7, 0.5));
// 결과 : NaN

제출한 코드

위의 Math.sqrt(), Number.isInteger(), Math.pow()을 사용하여 최종으로 하기 코드를 작성하였다.

function solution(n) {
  const num = Math.sqrt(n); // 제곱근을 반환 
  const numCheck = Number.isInteger(num); // 반환된 제곱근이 정수인지 확인해줌
  let answer = 0;

  numCheck == 1 ? (answer = Math.pow(num + 1, 2)) : (answer = -1);
  return answer; 
  // numcheck가 true라면 num+1에 제곱한 값을 출력 아니면 -1을 출력함 
}

[알고리즘] 정수 제곱근 판별 마무리하며..🤔

그래도 이제 어느정도 의사코드로 작성하는법은 익숙해졌는데 실제 코드로 구현을할때
모르는 함수나, 메서드가 많은거 같아서 그부분을 많이 공부해야겠다... 이렇게 velog를 작성 하면서 많은 종류의 함수나 메서드에대해 정리하고 틈틈히 봐야겠다!

profile
매일매일 틀깨기

0개의 댓글