하루 알고리즘(JS)

[바미] 팩토리얼 2

Bami 2024. 6. 1. 09:51
728x90
반응형

문제

https://www.acmicpc.net/problem/27433

코드

const fs = require('fs');
const input = fs.readFileSync('/dev/stdin').toString().trim();
const N = parseInt(input, 10);

function factorial(n) {
    if (n === 0) {
        return 1;
    } else {
        return n * factorial(n - 1);
    }
}

const result = factorial(N);
console.log(result);

문제 해설

이 문제는 for문으로 해결할 수 있지만 재귀함수를 사용하여 풀 것을 유도하고 있습니다.

따라서 주어진 정수 𝑁에 대해 𝑁!을 계산하는 재귀 함수를 사용하여 풀었습니다.

 

시간 복잡도

시간 복잡도는 알고리즘이 입력의 크기에 따라 얼마나 빠르게 실행되는지를 나타냅니다

 

팩토리얼 계산의 시간 복잡도는 재귀 호출 횟수에 따라 𝑂(𝑁)이 됩니다. 

각 호출은 𝑁번의 재귀 호출을 수행하게 됩니다.

공간 복잡도

공간 복잡도는 알고리즘이 얼마나 많은 메모리 공간을 사용하는지 나타냅니다.

 

재귀 함수 호출 스택의 깊이는 𝑁이므로 공간 복잡도는 𝑂(𝑁)이 됩니다.

 

728x90
반응형