출처: https://www.acmicpc.net/problem/10872
문제
0보다 크거나 같은 정수 N이 주어진다. 이때, N!을 출력하는 프로그램을 작성하시오.
입력
첫째 줄에 정수 N(0 ≤ N ≤ 12)이 주어진다.
출력
첫째 줄에 N!을 출력한다.
알고리즘
이번 문제는 팩토리얼을 구하는 문제입니다.
팩토리얼의 정의는 해당 숫자보다 작거나 같은 모든 양의 정수의 곱으로
이번 풀이에서는 단순하게 하나씩 곱하는 방법과 재귀를 이용한 방법 두 가지로 풀어보도록 하겠습니다.
코드
먼저, 단순히 1씩 내려가면서 곱하는 방식의 코드입니다.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.parseInt(br.readLine());
int fac = 1;
if(N <= 1) {
System.out.println(1);
}else {
while(N > 0) {
fac *= N;
N--;
}
System.out.println(fac);
}
}
}
두 번째로, 재귀를 이용하여 팩토리얼을 구하는 방법의 코드입니다.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.parseInt(br.readLine());
System.out.println(factorial(N));
}
//재귀를 이용한 함수
static int factorial(int N) {
if(N <= 1)
return 1;
else
return N * factorial(N-1);
}
}
이 글의 알고리즘이나 코드에서 지적할만한 부분은 댓글에 남겨주시면 저에게 많은 힘이 됩니다! |
'Java > 백준문제풀이' 카테고리의 다른 글
[백준] 7287번: 등록 [JAVA] (0) | 2022.02.11 |
---|---|
[백준] 2440번: 별 찍기 - 3 [JAVA] (0) | 2022.02.10 |
[백준] 2558번: A + B - 2 [JAVA] (0) | 2022.02.09 |
[백준] 2750번: 수 정렬하기 [JAVA] (0) | 2022.02.08 |
[백준] 2908번: 상수 [JAVA] (0) | 2022.02.07 |
댓글