Math.pow 사용

function power(base, exponent) {
	return Math.pow(base, exponent) % 94906249;
}

for문 사용

function power(base, exponent) {
	
	if(exponent = 0) {
		return 1;
	}

	let pow = 1;

	for(let i=1; i<=exponent; i++) {
		pow = pow * base;
	}

	return pow;
}

분할정복을 이용한 풀이

function power(base, exponent) {
	// 지수가 0이면 1이다.
  if (exponent === 0) {
    return 1;
  }

	// exponent를 반으로 나눠준다. 홀수의 경우를 대비해서 Math.floor를 사용한다.
	let halfExponent = Math.floor(exponent / 2);

	// 반으로 된 exponent를 재귀적으로 돌려준다. 
	// 2^10 => 2^5 * 2^5가 되는거처럼 재귀적으로 계속 돌려주면 같은 결과값을 뽑아내게 된다.
	let recursive = power(base, halfExponent);

	let result = (recursive * recursive) % 94906249;

	// 지수가 홀수의 경우 base를 한번 더 곱해준다.
	// ex) 2^11 = 2^5 * 2^5 * 2
	if(exponent % 2 !== 0) {
		result = (result * base) % 94906249;
	}
	// 최종 result를 리턴한다.
	return result;
}