반응형
제곱수 판별하기
🎈 문제설명
어떤 자연수를 제곱했을 때 나오는 정수를 제곱수라고 합니다. 정수 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합니다.
💻 나의 풀이
제곱수를 판별하는 함수( Math.sqrt()) 를 먼저 찾아보고
그러고 나서 Math.sqrt(n) 값이 정수인지 판별하는 함수(Number.isInteger())를 찾았다.
정수를 판별하는 방법은 하나 더 있었는데 Number.isInteger() 함수가 더 간결하고 직관적이었다.
다른 방법 하나를 더 보자면 나머지 연산자를 활용하여 정수를 판별하는 것이다. 자세한 설명은 아래에 하겠다.
정수를 판별 한 뒤 삼항연산자를 사용하여 판별 값이 true일 경우 1을 반환, false일 경우 2를 반환하여 문제를 풀었다.
function solution(n) {
var answer = 0;
answer = Number.isInteger(Math.sqrt(n)) ? 1:2;
return answer;
}
👀 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 : 숫자가 음수면 NaN 반환
👀 Number.isInteger()
Number.isInteger() 메서드는 파라미터로 입력받은 값이 정수인지 판단한다.
Number.isInteger(10); // true
Number.isInteger(0); // true
Number.isInteger(-10); // true
Number.isInteger(123.1); // false
👀 나머지 연산자(%) 활용
나머지 연산자(%)는 두 수를 나누었을 때 나머지 값을 구해준다.
정수는 1로 나누었을 때 항상 나머지가 0인 것을 이용하여 정수를 체크할 수 있다.
나머지 연산자를 사용하여 문제를 풀면 이렇게 소스코드를 작성할 수 있겠다.
function solution(n) {
var answer = 0;
answer = Math.sqrt(n) % 1 === 0 ? 1 : 2;
console.log(answer)
return answer;
}
반응형
'📂 JavaScript > 코딩테스트 - 프로그래머스' 카테고리의 다른 글
[프로그래머스 JS] 이어 붙인 수 (filter(), join(),Number()) (1) | 2024.02.02 |
---|---|
[프로그래머스 JS] 삼각형의 완성조건 (1), sort(), 구조분해할당, (2) | 2024.02.01 |
[프로그래머스 JS] 뒤에서 5등 위로 (0) | 2024.01.26 |
[프로그래머스 JS] 자릿수 더하기 (toString(),split(),map()) (2) | 2024.01.26 |
[프로그래머스 JS] 문자 반복 출력하기 (0) | 2024.01.26 |