본문 바로가기
프로그래밍 기초/Java Festival

[Java Festival] 31. 팩토리얼 계산하기

by 제이투더문 2024. 7. 7.

 

 안녕하세요, 작가 J입니다. 오늘은 마지막 문제로 1보다 큰 정수 N을 입력하여 N! 값을 구하는 프로그램을 작성해 보겠습니다. 팩토리얼은 주어진 수보다 작거나 같은 모든 양의 정수의 곱을 의미합니다.

 

[Java Festival 31] 팩토리얼 계산하기

1보다 큰 정수(N)를 입력하여 N! 값을 구하시오.

* 팩토리얼이란 N의 수보다 작거나 같은 모든 양의 정수의 곱

ex) 3! = 1 * 2 * 3 => 6

 

 

 

코드 풀이 1: 배열을 사용한 방식

package Ex;

import java.util.Scanner;

public class Ex31 {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        
        System.out.print("입력 : ");
        int n = sc.nextInt();
        
        int[] factorial = new int[n]; // 팩토리얼을 저장할 배열
        int sum = 1; // 팩토리얼 계산 결과를 저장할 변수
        
        // 팩토리얼 계산
        for (int i = 1; i <= n; i++) {
            factorial[i - 1] = i; // 배열에 값 저장
            sum *= factorial[i - 1]; // 팩토리얼 계산
        }
        System.out.println("출력 : " + sum); // 결과 출력
        sc.close(); // Scanner 객체 닫기
    }
}

 

1. 입력 받기

  • Scanner sc = new Scanner(System.in);
  • System.out.print("입력 : ");
  • int n = sc.nextInt();

2. 배열 초기화 및 팩토리얼 계산

  • int[] factorial = new int[n];
  • int sum = 1;
  • for (int i = 1; i <= n; i++) { ... }
    • 배열에 값을 저장하고, 팩토리얼을 계산합니다.

3. 결과 출력

  • System.out.println("출력 : " + sum);
  • sc.close();

 

코드 풀이 2: 재귀 호출을 사용한 방식

package Ex;

import java.util.Scanner;

public class Ex31Alternative {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        
        System.out.print("입력 : ");
        int n = sc.nextInt();
        
        int result = factorial(n); // 팩토리얼 계산
        
        System.out.println("출력 : " + result); // 결과 출력
        sc.close(); // Scanner 객체 닫기
    }

    // 팩토리얼을 재귀적으로 계산하는 메소드
    private static int factorial(int n) {
        if (n == 1) {
            return 1; // 기본 케이스: n이 1일 때 1을 반환
        } else {
            return n * factorial(n - 1); // 재귀 호출을 통해 팩토리얼 계산
        }
    }
}

 

1. 팩토리얼 계산 및 결과 출력

  • int result = factorial(n);
  • System.out.println("출력 : " + result);
  • sc.close();

2. 팩토리얼 재귀 메소드

  • private static int factorial(int n) { ... }
  • if (n == 1) { return 1; }
    • 기본 케이스: nn이 1일 때 1을 반환합니다.
  • else { return n * factorial(n - 1); }
    • 재귀 호출을 통해 팩토리얼을 계산합니다.

 

마무리

 이번 예제에서는 1보다 큰 정수 N을 입력하여 N! 값을 구하는 두 가지 방식의 프로그램을 다뤄보았습니다. 첫 번째 방식은 반복문을 사용한 기본 방식이며, 두 번째 방식은 재귀 호출을 사용한 방식입니다. 두 가지 방법 모두 이해하시는데 도움이 되길 바랍니다.

 이로써 Java Festival의 모든 문제를 마무리하게 되었습니다. 지금까지 함께해주신 모든 분들께 감사드립니다. 이번 시리즈가 여러분의 자바 프로그래밍 실력을 향상시키는데 도움이 되었기를 바랍니다. 앞으로도 더 많은 유익한 내용을 준비하여 여러분과 함께 하겠습니다.