Study/Baekjoon

Baekjoon10872: 팩토리얼

devyoseph 2021. 10. 14. 23:14

문제

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