본문 바로가기
Computer/Algorithm_Java

[BaekJoon] 27433번 팩토리얼 2 문제 풀이 (Success)

by HJ0216 2023. 9. 9.
 

27433번: 팩토리얼 2

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
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.valueOf(br.readLine());
 
        long sum = 1;
        while (n-- > 0) {
            sum *= (n + 1);
        }
 
        bw.write(sum + "");
 
        bw.flush();
        bw.close();
 
    }
}
 
 

🤔 해설

1. sum *= (n + 1);

    - num--, 후위 연산자에 의해 n 값이 감소된 상태로 계산되므로 +1

 

😮  외의 풀이

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
29
30
31
32
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.StringTokenizer;
 
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));
 
        StringTokenizer st = new StringTokenizer(br.readLine());
        long N = Long.valueOf(st.nextToken());
 
        bw.write(factorial(N) + "");
 
        bw.flush();
        bw.close();
 
    }
 
    public static long factorial(long N) {
 
        if (N <= 1)
            return 1;
 
        return N * factorial(N - 1);
    }
}
 
 

1. factorial(long N)

    - 재귀호출 사용

    - 매개변수 N에서 직접 계산하므로 처음부터 타입을 long으로 입력받음

 

 

 

🔗 소스 코드
GitHub