JavaScript

[JS] 코딩테스트 019~020 - 제곱근,거듭제곱 Math.pow()

Irene1988 2025. 2. 16. 22:13
문제19 : 제곱을 구하자

공백으로 구분하여 두 숫자 a와 b가 주어지면, 
a의 b승을 구하는 프로그램을 작성하세요.
const num = prompt().split(' ');

console.log(Math.pow(parseInt(num[0],10), parseInt(num[1],10)));

 

좀 더 코드를 보강한 답

        let result = 0;
        // 1. prompt 입력값을 받는다.
        // 2. 입력받은 값을 띄어쓰기 단위로 하여 배열로 저장한다.
        // 입력받은 두개의 숫자 값은 a,b => a의 b승 구하기
        const num = prompt().split(' ');
        //console.log("첫번째 숫자: "+ num[0]+ "두번째 숫자: "+num[1]);
        if(num.some(n => isNaN(n) || n < 0)){
            console.log("올바른 수를 입력하세요! 음수 입력 불가");
        } else {
            result = Math.pow(parseInt(num[0],10), parseInt(num[1],10));
        }

        console.log(result);
        document.write(result);

 


문제20 : 몫과 나머지
공백으로 구분하여 두 숫자가 주어집니다.
두번째 숫자로 첫번째 숫자를 나누었을 때 
그 몫과 나머지를 공백으로 구분하여 출력하세요.

 

const num = prompt('두 숫자 입력').split(" ");

let val1 = Math.floor(parseInt(num[0],10)/parseInt(num[1],10)); // 몫저장
console.log(val1);

let val2 = parseInt(num[0],10)%parseInt(num[1],10);
console.log(val1, val2);

 

🔹 Math.pow()란?

Math.pow()는 거듭제곱(제곱 연산)을 수행하는 자바스크립트 내장 함수야!

Math.pow(base, exponent)

 

  • base → 밑(base, 밑수)
  • exponent → 지수(거듭제곱할 값)
  • 결과: base를 exponent 만큼 거듭제곱한 값 반환

1️⃣ 기본 사용법

console.log(Math.pow(2, 3)); // 2³ = 8
console.log(Math.pow(5, 2)); // 5² = 25
console.log(Math.pow(10, 0)); // 10⁰ = 1
console.log(Math.pow(3, -2)); // 3⁻² = 1 / (3²) = 1/9 = 0.111...

✅ Math.pow(2, 3) → 2 × 2 × 2 = 8
✅ Math.pow(5, 2) → 5 × 5 = 25
✅ Math.pow(10, 0) → 어떤 수든 0제곱이면 1
✅ Math.pow(3, -2) → 음수 지수는 1 / (밑의 양수 거듭제곱)


2️⃣ Math.pow() 대신 ** 연산자 사용 가능! (ES6)

ES6(ECMAScript 2016)부터는 ** 연산자를 사용하면 더 간단하게 표현할 수 있어!

console.log(2 ** 3); // 8
console.log(5 ** 2); // 25
console.log(10 ** 0); // 1
console.log(3 ** -2); // 0.111...

👉 Math.pow(2, 3) 대신 2 ** 3을 쓰면 더 직관적이고 간결한 코드 작성 가능!


3️⃣ Math.pow() vs ** 속도 차이

 

  • Math.pow()와 ** 연산자는 기능적으로 동일하지만, ** 연산자가 더 빠름! (자바스크립트 엔진에서 최적화됨)
  • 대부분의 경우 ** 연산자를 사용하는 것이 더 좋음!

✅ 속도 비교 예제

console.time("Math.pow");
for (let i = 0; i < 1000000; i++) {
  Math.pow(2, 10);
}
console.timeEnd("Math.pow");

console.time("Exponentiation");
for (let i = 0; i < 1000000; i++) {
  2 ** 10;
}
console.timeEnd("Exponentiation");

👉 Math.pow()보다 ** 연산자가 조금 더 빠른 결과를 보여!


 

4️⃣ Math.pow() 실전 예제

제곱근 구하기 (Math.sqrt())와 비교

Math.pow(x, 0.5)는 Math.sqrt(x)와 같은 결과를 반환해.

console.log(Math.pow(9, 0.5)); // 3
console.log(Math.sqrt(9)); // 3 (동일한 결과)

👉 제곱근을 구할 때는 Math.sqrt()를 사용하는 게 더 직관적이고 가독성이 좋음!

 

2의 제곱수 리스트 만들기

for (let i = 0; i <= 10; i++) {
  console.log(`2^${i} = ${Math.pow(2, i)}`);
}

👉 2^0부터 2^10까지 출력됨!

 

10진수를 16진수 변환 (16⁰, 16¹, 16²...)

16진수를 10진수로 변환할 때 Math.pow(16, 자리수)를 사용할 수 있어.

function hexToDecimal(hex) {
  let decimal = 0;
  for (let i = 0; i < hex.length; i++) {
    let digit = parseInt(hex[i], 16); // 16진수 → 10진수 변환
    decimal += digit * Math.pow(16, hex.length - 1 - i);
  }
  return decimal;
}

console.log(hexToDecimal("1A")); // 26 (1×16¹ + 10×16⁰)
console.log(hexToDecimal("FF")); // 255 (15×16¹ + 15×16⁰)

👉 1A(16진수) = 26(10진수)
👉 FF(16진수) = 255(10진수)


5️⃣ Math.pow() 정리

✅ Math.pow(base, exponent) → 거듭제곱 계산
✅ Math.pow(2, 3) → 2³ = 8
✅ Math.pow(x, 0.5) = Math.sqrt(x) (제곱근)
ES6에서는 ** 연산자 사용 가능 (2 ** 3)
✅ Math.pow()보다 ** 연산자가 더 빠르고 직관적