반응형


 

백준 - 단계별로 풀어보기 [10872] 

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

문제

 

 

0부터 12사이의 수 N의 팩토리얼을 구하는 문제이다.

 

풀이

 

factorial의 정의에 따라서 재귀함수로 구현하기 위해서는,

 

int factorial(int n)
{
    if(n <= 1)
        return 1;
    return n * factorial(n-1);
}

 

위와 같은 소스코드로 구현이 가능하다.

이 때, 조건을 n <= 1로 하는 이유는 입력이 0부터이기 때문에, 만약 n == 1로 할 경우, 무한루프에 빠져 시간초과가 발생한다.

만약 재귀로 풀었는데 시간초과 에러가 뜨는 경우는 조건문을 위처럼 수정해야 한다.

 

코드

 

#include <cstdio>

int factorial(int n)
{
    if(n <= 1)
        return 1;
    return n * factorial(n-1);
}

int main() {
    int num;
    scanf("%d",&num);
    printf("%d",factorial(num));
}

 

평가

 

n <= 1 조건을 n == 1로 하여 시간초과가 많이 발생하는 문제이다.

항상 입력값의 조건을 유의하며 문제를 풀이하는 습관을 들여야 한다.

 

 

반응형
블로그 이미지

Hyunsoo Luke HA

석사를 마치고 현재는 Upstage에서 전문연구요원으로 활동중인 AI 개발자의 삽질 일지입니다! 이해한 내용을 정리하는 용도로 만들었으니, 틀린 내용이 있으면 자유롭게 의견 남겨주세요!

,