문제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()보다 ** 연산자가 더 빠르고 직관적
'JavaScript' 카테고리의 다른 글
[JS] 코딩테스트 022~026 - 대문자, 소문자 변환 (0) | 2025.02.17 |
---|---|
[JS] 코딩테스트 021 - new Set() (0) | 2025.02.16 |
[JS] 코딩테스트 018 - 반올림, 올림, 버림 / parseInt (0) | 2025.02.16 |
[JS] 코딩테스트 014~017 - 자바스크립트 연산자 정리, NOT 연산자 (0) | 2025.02.16 |
[JS] 코딩테스트 013 - 배열 Array (0) | 2025.02.16 |