본문 바로가기

Algorithm

[JAVA] 백준 알고리즘 10872번 팩토리얼

www.acmicpc.net/problem/10872

 

10872번: 팩토리얼

0보다 크거나 같은 정수 N이 주어진다. 이때, N!을 출력하는 프로그램을 작성하시오.

www.acmicpc.net

팩토리얼(Factorial)이란 N이라는 자연수가 있을때 1부터 N까지 자연수의 곱을 의미한다.

표현은 N!으로 한다.

예를 들어 6!은 1*2*3*4*5*6이므로 720이 나오게 된다.

import java.util.*;

class Main{
	public static void main(String args[]){
		
		Scanner sc = new Scanner(System.in);
		
		int a = sc.nextInt();
		int result = a;
		
		if(a > 0){
			for(int i = a-1; i > 0; i--){
			
				result = result * i;
			}
			System.out.println(result);
		} else {
			System.out.println(1);
		}
		

	}
}

a는 팩토리얼을 구하고자하는 수를 입력받아 저장하는 변수이다.

result는 결과값을 저장하는 변수이고 초기값으로는 입력받은 a를 저장한다.

 

먼저 a가 0인지 아닌지를 검사하여 0일 경우에는 1을 출력하게하고

0이 아닐경우에는 반복문을 실행한다.

 

for문을 보게되면 i는 a-1부터 0까지 1씩 감소하게 작성하였고

실행부에는 result에 i값을 곱하여 result에 저장한다.

반복이 종료되면 출력을 하게되고 프로그램이 종료된다.

 

0의 팩토리얼은 0이지만 위 프로그램에서는 0일떄의 출력값을 1로 출력되게 짜여져있으므로

if문으로 구분하여 1로 출력한다.