더 많이 실패하기

백준 10872번 팩토리얼 자바 Java (☆공부 246일차) 본문

알고리즘/백준

백준 10872번 팩토리얼 자바 Java (☆공부 246일차)

김발자~ 2023. 4. 2. 18:58
반응형

10872 팩토리얼

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

 

10872번: 팩토리얼

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

www.acmicpc.net

 

 

 


백준 10872번 문제 팩토리얼


문제


 

시간 제한 메모리 제한 제출 정답 맞힌 사람 정답 비율
1 초 256 MB 147325 77941 63755 53.091%

문제

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

입력

첫째 줄에 정수 N(0 ≤ N ≤ 12)이 주어진다.

출력

첫째 줄에 N!을 출력한다.

예제 입력 1

10

예제 출력 1

3628800

예제 입력 2

0

예제 출력 2

1
 
 

 


과정 생각해보기


 

 

https://gimbalja.tistory.com/102

 

백준 18870번 좌표 압축 자바 Java

백준 10단계 1번 문제 - 10872 팩토리얼 https://www.acmicpc.net/problem/10872 10872번: 팩토리얼 0보다 크거나 같은 정수 N이 주어진다. 이때, N!을 출력하는 프로그램을 작성하시오. www.acmicpc.net 10. 재귀 (1) 백

gimbalja.tistory.com

 

5달 전에 풀었던 문제

 

재귀를 이용하는 게 정석이다
그래서 이전과 같은 풀이
 
 
 

정답 인정 코드


 

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
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{
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
        
        bw.write(factorial(Integer.parseInt(br.readLine()))+"");
        bw.flush();
        bw.close();
        br.close();
    }
 
    static int factorial(int n) {
        if(n == 0) {
            return 1;
        }
        return n * factorial(n-1);    // ★
    }
}
 
cs

 

 

2) 반복문 이용
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{
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
        
        bw.write(factorial(Integer.parseInt(br.readLine()))+"");
        bw.flush();
        bw.close();
        br.close();
    }
 
    static int factorial(int n) {
        int sum = 1;
        for(int i = 1; i < n+1; i++) {
            sum*=i;
        }
        return sum;
    }
}
 
cs
 

 

 


메모리와 시간은 비슷하지만

1번 풀이가 더 좋다고 본다

반응형
Comments