- 제곱근으로 변환 한다.
- 제곱근을 구하면 삼항 연산자 또는 if문을 이용해서 리턴값을 다르게 준다.
위의 의사코드에서 간과한 부분이 있었다 ... 정수인지 확인해주는 함수가 필요한데 그부분을 문제를 풀면서 필요하다 생각하여 의사코드를 수정하였다.
- 제곱근으로 변환 한다.
- 정수인지 확인 한다.
- 제곱근을 구하면 정수인지 삼항 연산자 또는 if문을 이용해서 확인후 리턴값을 다르게 준다.
코드를 작성하면서 의사코드를 작성하면서 필요한 기능들을 구현하기위해 필요한 Math.sqrt(), Number.isInteger(), Math.pow()들이 기억나지 않아 구글링하여 정리하였다.
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() 메서드는 주어진 값이 정수인지 판별합니다.
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()함수는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를 작성 하면서 많은 종류의 함수나 메서드에대해 정리하고 틈틈히 봐야겠다!