본문 바로가기
Computer/Algorithm_Java

[Algorithm_Java] 10872번 팩토리얼 (Success)

by HJ0216 2023. 10. 1.
 

10872번: 팩토리얼

0보다 크거나 같은 정수 N이 주어진다. 이때, N!을 출력하는 프로그램을 작성하시오.

www.acmicpc.net

 

 Language: Java

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
 
public class Main {
 
    public static void main(String[] args) throws IOException {
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
 
        int cnt = Integer.parseInt(br.readLine());
 
       int result = 1;
        for(int i = 1; i<=cnt; i++) {
            result *= i;
        }
 
        bw.write(result+"");
        
        bw.flush();
        bw.close();
 
    }
 
}
 
 

1. result *= i;

    - 입력값만큼 팩토리얼 계산

 

😮  외의 풀이

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
 
public class Main {
    public static void main(String[] args) throws IOException {
 
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
 
        int N = Integer.parseInt(br.readLine());
 
        bw.write(factorial(N) + "");
 
        bw.flush();
        bw.close();
    }
 
    public static int factorial(int N) {
        if (N <= 1)
            return 1;
        return N * factorial(N - 1);
    }
 
}
 
 

1. return N * factorial(N - 1);

    - 재귀호출 사용

 

🚨 값의 입력범위가 0부터 가능하므로 N을 1보다 작거나 같은 범위로 지정

    - N==1로 지정할 경우, N==0일 때 StackOverFlow 발생

 

 

 

🔗 소스 코드
GitHub