반응형
백준 - 단계별로 풀어보기 [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로 하여 시간초과가 많이 발생하는 문제이다.
항상 입력값의 조건을 유의하며 문제를 풀이하는 습관을 들여야 한다.
반응형
'Algorithm > Baekjoon BOJ' 카테고리의 다른 글
[백준 / BOJ] - 2447번 별 찍기 -10 C++ 풀이 (13) | 2020.02.26 |
---|---|
[백준 / BOJ] - 10870번 피보나치 수 5 C++ 풀이 (0) | 2020.02.26 |
[백준 / BOJ] - 1002번 터렛 C++ 풀이 (1) | 2020.02.25 |
[백준 / BOJ] - 3053번 택시 기하학 C++ 풀이 (0) | 2020.02.25 |
[백준 / BOJ] - 4153번 직각삼각형 C++ 풀이 (0) | 2020.02.18 |