문제
0보다 크거나 같은 정수 N이 주어진다. 이때, N!을 출력하는 프로그램을 작성하시오.
입력
첫째 줄에 정수 N(0 ≤ N ≤ 12)이 주어진다.
출력
첫째 줄에 N!을 출력한다.
추상화
반복해서 곱해준다 = 반복문 사용
연산 속도 개선: 정수의 제한조건이 12까지므로 미리 값을 구해놓은 배열에서 값을 꺼내와도 된다
0! 의 값은 1이다. 초기값을 1로 설정하면 해결된다
0! = 1 x (연산 없음)
1! = 1 x 1
2! = 1 x 1 x 2
3! = 1 x 1 x 2 x 3
import java.io.*;
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 one = 1;
// one은 초기값이다
for(int i = 1; i<=N; i++) {
one *= i;
}
System.out.print(one);
}
}
메소드의 활용: 모범답안
위의 경우 반복문을 통해서 처리했지만
백준에서 제시하는 재귀 단계의 풀이는 메소드의 활용이다
import java.io.*;
public class Main {
static int Factorial(int x){
if(x==0) {
return 1;
}
return x*Factorial(x-1);
//현재 메소드는 이전 메소드와 주어진 x와의 곱이다
}
public static void main(String[] args) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.parseInt(br.readLine());
System.out.print(Factorial(N));
}
}
'Study > Baekjoon' 카테고리의 다른 글
Baekjoon2447: 별 찍기 - 10 (0) | 2021.10.15 |
---|---|
Baekjoon10870: 피보나치 수 5 (0) | 2021.10.14 |
Baekjoon1002: 터렛, 낮은 정답률의 이유 (0) | 2021.10.14 |
Baekjoon3053: 택시 기하학 (0) | 2021.10.14 |
Baekjoon4153: 직각삼각형 (0) | 2021.10.14 |