[프로그래머스 문제 참고]
✏️ 문제 설명
어떤 자연수를 제곱했을 때 나오는 정수를 제곱수라고 합니다. 정수 n이 매개변수로 주어질 때, n이 제곱수라면 1을 아니라면 2를 return하도록 solution 함수를 완성해주세요.
제한사항
- 1 ≤ n ≤ 1,000,000
입출력 예
n | result |
144 | 1 |
976 | 2 |
입출력 예 설명
입출력 예 #1
- 144는 12의 제곱이므로 제곱수입니다. 따라서 1을 return합니다.
입출력 예 #2
- 976은 제곱수가 아닙니다. 따라서 2를 return합니다.
어떻게 특정 Number가 제곱수인지 알 수 있을까?
다행히 여기 잘 활용할 수 있는 메서드가 있다.
// Syntax
Math.sqrt(x)
// Parameters
// x는 0보다 크거나 같은 숫자
// 반환 값
// x>0이면 x의 제곱근을 반환, x<0이면, NaN를 반환
Math.sqrt() 정적 메서드는 () 안에 숫자의 제곱근을 반환한다.
위 문제 예시처럼 제곱근을 판별해 주려면
function solution(n) {
let z = Math.sqrt(n);
return n == z * z ? 1 : 2;
}
제곱근의 곱이 제곱수가 되는지 확인하면 된다. 위 예시 코드로 하면 2개의 테스트 케이스 오류가 난다.
✏️ 문제 답안
function solution(n) {
let z = Math.sqrt(n);
return n == Math.ceil(z) * Math.floor(z) ? 1 : 2;
}
Math.ceil() 메서드는 소수점 자리를 무조건 올려주고 Math.floor()는 소수점 자리를 무조건 내려줘 z가 완벽한 제곱수인지 알 수 있다.
✏️ 다른 풀이
function solution(n) {
return Number.isInteger(Math.sqrt(n)) ? 1 : 2;
}
function solution(n) {
return Math.sqrt(n) === Math.floor(Math.sqrt(n)) ? 1 : 2
}
Number.isInteger로 딱 떨어지는지를 확인해주거나 제곱근을 서로 비교하는 방법으로도 풀 수 있다.
참고사이트
How to Check if a Number is a Perfect Square in JavaScript
공부하면서 적는 글입니다. 잘못된 점이 있다면 댓글로 알려주세요 :)
'프로그래밍 > JavaScript' 카테고리의 다른 글
[JS] this는 도대체 뭘까? this의 개념과 예시 문제 풀이 (0) | 2023.01.17 |
---|---|
[Js] Array push와 concat의 차이 (0) | 2023.01.09 |
[JS] Array 요소 추가, 제거, 길이 변경 메서드 정리 💛 (0) | 2023.01.05 |
[Js] split(), split(''), split(' ')의 명확한 차이 (0) | 2023.01.04 |
[자바스크립트 완벽 가이드] 비동기 프로그래밍이란? (0) | 2022.12.13 |