#10872 - 팩토리얼

2025. 7. 11. 12:44·CODING TEST/baekjoon

📌 문제 정보

- 문제 이름 : #10872번 - 팩토리얼

- 문제 링크 : https://www.acmicpc.net/submit/10872

 

 

📌 문제 요약

- 핵심 조건: N! 팩토리얼 출력

- 제한: N(0 ≤ N ≤ 12)

 

 

📌 최종 정답 및 풀이

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);

        int N = sc.nextInt();
        int result = 1;

        for (int i=N; i>=1; i--) {
            result *= i;
        }

        System.out.print(result);

    }
}

<-- 풀이 요약 -->

- 팩토리얼 수학 공식은 알고 있었는데.. 구현 능력 미숙인 것 같다. (누적까지 알았는데 N에다가 자꾸 누적하고 있었음..ㅋㅋ..)

- n! = n x (n-1) x (n-2) .... x 1 이고 i-- 를 써서 구현을 해야겠다 까지 생각했는데 for안에 조건식을 몰랐음.

- 찾아보니 증가든 감소든 상관없었음. 내가 너무 저 식에 꽂혀서 자꾸 i-- 하려면 식을 어떻게 써야하지... 생각만 한듯..

 

 

 

<-- 다른 풀이 요약 -->

// 1 : i++로 쓰는 식
int result = 1;

for (int i = 1; i <= N; i++) {
    result *= i;
}


// 2 : 재귀함수 버전
import java.util.Scanner;

public class Main {
    // 팩토리얼을 구하는 재귀 함수
    public static int factorial(int n) {
        if (n <= 1) {
            // n이 0이거나 1이면 1을 반환 (종료 조건)
            return 1;
        }
        // 자기 자신을 다시 호출!
        return n * factorial(n - 1);
    }

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);

        int N = sc.nextInt();

        int result = factorial(N); // 재귀 함수 호출

        System.out.println(result);
    }
}

- 1 : i++로 하면 1 * 2 * 3 * ... * N 이런식으로 가면 됨.

- 2 : 재귀함수 방법 : 수학 정의 그대로 코드로 표현 (.. 좀 복잡해보임..)

✅ 동작 흐름

예: factorial(5)

  1. factorial(5) = 5 × factorial(4)
  2. factorial(4) = 4 × factorial(3)
  3. factorial(3) = 3 × factorial(2)
  4. factorial(2) = 2 × factorial(1)
  5. factorial(1) = 1 (종료)

이렇게 해서 5 × 4 × 3 × 2 × 1 = 120 계산 완료

반복문 버전 재귀 함수 버전
for문으로 누적 곱 함수가 자기 자신을 다시 호출
상태를 직접 저장 (result) 호출 스택으로 자동 계산
속도 빠름 (스택 안 씀) 코드 간결 (가독성 좋음)

 

  • 종료 조건(n <= 1)을 꼭 써야 무한 재귀를 막을 수 있음.
  • 너무 큰 값이면 스택 오버플로우 에러가 날 수 있으니 주의.



 

📌 새로 배운 문법

<-- 이번 문제에서 새로 배운 Java 문법 정리 -->

- 팩토리얼 문제는 누적 곱이 핵심임!!

- 재귀함수는 좀 익숙해지면 다시 공부하기..

'CODING TEST > baekjoon' 카테고리의 다른 글

#11654 - 아스키 코드  (0) 2025.07.17
#15552 - 빠른 A + B  (0) 2025.07.11
#10951 - A+B - 4 / #10952 - A+B-5  (0) 2025.07.10
#30087 - 진흥원 세미나  (0) 2025.07.10
#11718 - 그대로 출력하기  (0) 2025.07.10
'CODING TEST/baekjoon' 카테고리의 다른 글
  • #11654 - 아스키 코드
  • #15552 - 빠른 A + B
  • #10951 - A+B - 4 / #10952 - A+B-5
  • #30087 - 진흥원 세미나
iamyuunzo
iamyuunzo
https://github.com/iamyuunzo
  • iamyuunzo
    iamyuunzo
    iamyuunzo
  • 전체
    오늘
    어제
    • 분류 전체보기 (94)
      • Study (5)
        • App Developer (0)
        • Algorithm study (0)
        • Google AI Essentials (3)
      • Project (3)
        • 감행 (3)
        • Tokkit (0)
        • 다시, 봄 (0)
        • Clone Coding (0)
      • 자격증 모음 (5)
        • AWS Certification (1)
        • 정보처리기사 (0)
        • 빅데이터분석기사 (1)
        • TOEIC Speaking (3)
      • CODING TEST (79)
        • baekjoon (26)
        • programmers (20)
        • MySQL (31)
        • COS Pro (2)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • github
  • 공지사항

  • 인기 글

  • 태그

    백준
    감행
    java
    회고
    AWS Certification
    우리 fisa
    토익 스피킹
    회고록
    toeic speaking
    프로그래머스
    baekjoon
    Programmers
    클라우드서비스개발
    SQL
    AWS Certified Cloud Practitioner
    우리fisa
    프로젝트 리팩토링
    COS Pro
    우리fis아카데미
    CLF-C02
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
iamyuunzo
#10872 - 팩토리얼
상단으로

티스토리툴바