[백준] 10872번.팩토리얼 | 브론즈3 | Python

싱숭생숭어·2024년 4월 3일
0

백준

목록 보기
11/32

문제

시간 제한메모리 제한제출정답맞힌 사람정답 비율
1 초256 MB168056915087528254.681%

문제 설명

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

입력

첫째 줄에 정수 N(0 ≤ N ≤ 12)이 주어진다.

출력

첫째 줄에 N!을 출력한다.

예제 입력 1

10

예제 출력 1

3628800

예제 입력 2

0

예제 출력 2

1


내 풀이

이 문제는 두가지 방법으로 풀 수 있다.
1) if~else, 반복문 사용
2) 재귀함수 사용

내 풀이 1

이것은 반복문을 사용해서 푼 방법이다.

n == 1, n == 0일 경우 n! 은 1이다.
1 이후 n의 경우 x라는 변수에 계속 곱해주었다.

n = int(input())
if n == 0:
    x = 1
elif n == 1:
    x = 1
else:
    x = 1
    for i in range(1, n+1):
        x = x*i
print(x)

내 풀이 2

팩토리얼의 정석적인 풀이이다.

n = int(input())

def fact(n):
    if n == 0 or n == 1:
        return 1
    else:
        return n*fact(n-1)

print(fact(n))

단, 백준 문제에서 함수를 구현했을 때 주의할 점은
출력시 fact(n)을 하면 안되고 꼭 print(fact(n))처럼 함수를 print문 안에 넣어줘야한다는 것이다.
fact(n)은 함수를 실행하는 것이지, return 값을 출력하는 것은 아니다.

profile
공부합시당

0개의 댓글