본문 바로가기
Java/백준문제풀이

[백준] 10872번: 팩토리얼 [JAVA]

by ehdghk154 2022. 2. 9.

출처: 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);
	}
}

 

이 글의 알고리즘이나 코드에서 지적할만한 부분은 댓글에 남겨주시면 저에게 많은 힘이 됩니다!

 

댓글