[백준 BOJ] 10872번 팩토리얼 (C++/cpp)

2022. 5. 1. 01:32PS (Program Solving)/BOJ (백준)

문제 설명

https://www.acmicpc.net/problem/10872

 

10872번: 팩토리얼

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

www.acmicpc.net

백준 BOJ 10872번 팩토리얼 문제 사진

 

접근 방법 - 재귀 함수 구현의 기본 문제

백준의 10872번 문제는 간단한 재귀 함수를 구현하여 해결해야 하는 문제이다.

해당 문제는, 입력값에 대한 팩토리얼 연산의 결괏값을 출력해야 하는 문제이다.

우선 팩토리얼의 기본적인 개념을 아래 예시로 작성해보았다.

5! = 5*4*3*2*1

이러한 원리를 재귀 함수로 구현해야 하는데, 필자는 본래 알고 있던 팩토리얼 함수를 그대로 작성하여 응용하였다.

팩토리얼 함수에 대해 잘 모른다면, 아래의 설명과 코드를 함께 참고하길 바란다.

필자는 아래의 순서대로 코드를 작성하여 문제를 해결하였다.

 

코드의 실행 순서

1) 값(n)을 입력받는다.

 

2) 구현해둔 팩토리얼 함수를 호출하여 아래의 연산을 취한다.

- 매개변수의 값이 1 또는 0이라면, 1을 반환한다.

- 다만 1 또는 0이 아니라면, n과 n-1을 재귀 함수에 넣은 값을 함께 곱하여 반환한다.

ex) n=3인 경우,
factorial(3) = 3*factorial(2) = 3*2*factorial(1) = 3*2*1

 

3) 팩토리얼 함수의 결괏값을 출력한 뒤, 실행 종료한다.

반응형

 

성공한 코드

#define _CRT_SECURE_NO_WARNINGS
#pragma warning(disable: 4996)
#include <iostream>
#define endl '\n'
using namespace std;

//백준 10872번 코드
int factorial(int n) {
	if (n == 1 || n == 0) {
		return 1;
	}
	return n * factorial(n - 1);
}

int main() {
	ios::sync_with_stdio(false);
	cin.tie(NULL);	cout.tie(NULL);
	
	int n;
	cin >> n;
	cout << factorial(n) << endl;
}

 

제출 결과

백준 BOJ 10872번 팩토리얼 문제 C++ 제출 결과

(2022.04.14 백준 10872번 문제 제출 결과)

반응형