알고리즘/백준
백준 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번 풀이가 더 좋다고 본다
반응형