반응형
[ Contents ]
1. 문제 (링크 참조)
2. 문제 풀이
팩토리얼을 구하는 문제입니다.
2022.01.19 - [Algorithm] - [Algorithm] 단골 1번 문제, 구현 / 수학
반복문을 이용하면 쉽게 구할 수 있는 문제입니다. 괜히 어설프게 재귀함수를 사용하면 시간초과가 날 수 있습니다. 재귀함수의 예시로 팩토리얼이 자주 등장하는 이유는, 대표적인 잘못된 사용이기 때문입니다.
제대로 팩토리얼을 구현하고자 한다면, 적어도 꼬리 재귀함수를 사용해야 합니다. 대개 팩토리얼은 메모이제이션(Memoization) 기법을 사용해서 구현합니다. 다만 이 문제는 N이 12까지로 계산복잡도가 크지 않으므로 반복문으로 구현합니다.
3. 코드
N = int(input())
res = 1
for i in range(N):
res *= i+1
print(res)
반복문을 이용해서 팩토리얼을 구해줍니다. 팩토리얼은 1번만 구하므로, 재사용을 고려할 필요는 없습니다.
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int time = sc.nextInt();
sc.close();
System.out.print(factorial(time));
}
public static int factorial(int a) {
int result = 1;
for(int i = 1; i <= a; i++) {
result *= i;
}
return result;
}
}
반응형
'Algorithm' 카테고리의 다른 글
[분할정복/DQ] 백준 2630 색종이 만들기 - Python (0) | 2022.01.29 |
---|---|
[Algorithm] 분할정복(DQ, Divide-and-Conquer), 각개격파 알고리즘 (0) | 2022.01.29 |
[구현/수학] 백준 2908 상수 - Python, Java (0) | 2022.01.28 |
[구현/수학] 백준 4673 셀프 넘버 - Python, Java (0) | 2022.01.28 |
[구현/수학] 백준 10818 최소, 최대 - Python (0) | 2022.01.27 |
댓글