반응형
https://school.programmers.co.kr/learn/courses/30/lessons/120909
✅ 문제
어떤 자연수를 제곱했을 때 나오는 정수를 제곱수라고 합니다. 정수 n이 매개변수로 주어질 때, n이 제곱수라면 1을 아니라면 2를 return하도록 solution 함수를 완성해주세요.
제한 사항
• 1 ≤ n ≤ 1,000,000
입출력 예
n | result |
144 | 1 |
976 | 2 |
🔎 풀이 방법
제곱수 찾는 함수 있을 거 같은데 모르겠어서 mdn에서 Math 찾아봤다.
제곱수를 계산하는 함수를 사용해서 나온 값이 정수로 나와야 제곱수이므로 1로 나눴을 때 나머지가 0이 되는지 확인해줬다.
💻 코드
function solution(n) {
return Math.sqrt(n) % 1 === 0 ? 1 : 2;
}
👀 추가 공부
숫자의 제곱근을 반환하는 함수: Math.sqrt()
- sqrt()는 Math의 정적 메서드이므로, 사용자가 생성한 Math 객체의 메서드로 호출할 수 없고 항상 Math.sqrt() 함수를 사용해야합니다. (Math는 생성자가 없습니다.)
- 주어진 숫자에 루트(√ )를 씌웁니다. 만약 숫자가 음수이면 'NaN'를 반환합니다.
- https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Math/sqrt
숫자의 세제곱근을 반환 함수: Math.cbrt()
- cbrt()는 Math의 정적 메서드이므로, 사용자가 생성한 Math 객체의 메서드로 호출할 수 없고 항상 Math.cbrt() 함수를 사용해야 합니다. (Math는 생성자가 아닙니다)
- https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Math/cbrt
// MDN 예제 코드
// Math.sqrt(n);
Math.sqrt(9); // 3
Math.sqrt(2); // 1.414213562373095
Math.sqrt(1); // 1
Math.sqrt(0); // 0
Math.sqrt(-1); // NaN
// Math.cbrt(n);
Math.cbrt(NaN); // NaN
Math.cbrt(-1); // -1
Math.cbrt(-0); // -0
Math.cbrt(-Infinity); // -Infinity
Math.cbrt(0); // 0
Math.cbrt(1); // 1
Math.cbrt(Infinity); // Infinity
Math.cbrt(null); // 0
Math.cbrt(2); // 1.2599210498948734
Number.isInteger() 사용 => 주어진 값이 정수인지 판별하는 함수
// 프로그래머스 다른 사람 풀이
function solution(n) {
return Number.isInteger(Math.sqrt(n)) ? 1 : 2;
}
https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Number/isInteger
반응형
'🔥 CodingTest > 프로그래머스' 카테고리의 다른 글
[Lv.0] 배열 만들기 1 (0) | 2024.04.03 |
---|---|
[Lv.0] 두 수의 연산값 비교하기 (0) | 2024.04.02 |
[Lv.0] n의 배수 고르기 (0) | 2024.03.23 |
[Lv.0] 짝수는 싫어요 (0) | 2024.03.20 |
[Lv.0] 세균 증식 (2) | 2024.03.17 |