본문 바로가기
코딩테스트/백준 알고리즘

백준 알고리즘 | 10872 : 팩토리얼 (Python / 파이썬)

by 함께 공부해요 2020. 12. 10.


팩토리얼 성공분류

시간 제한

메모리 제한

제출

정답

맞은 사람

정답 비율

1 초

256 MB

54695

25674

21955

47.738%

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

 

10872번: 팩토리얼

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

www.acmicpc.net


문제

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

입력

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

출력

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

알고리즘 분류

수학

구현


 

백준 알고리즘 # 10872번 : 팩토리얼

출처:  https://amagrammer91.tistory.com/9

def fact(num):
    if num == 0:
        return 1
    return num * fact(num - 1)

n = int(input())
print(fact(n))

풀이

정말 오랜만에 보자마자 어떤 로직으로 풀어야하는지 바로 떠오르는 문제가 나왔어요🤣

key point

먼저 fact라는 함수를 정의(def)해주고 num를 인자(parameter)로 받습니다.

(이때 factorial로 함수를 정의해도 되고, num가 아니고 number든 뭐든 아무렇게나 인자를 설정하면 되요!)

다음으로 만약(if) 인수(argument)로 받은 num가 0이 될 때에는 1로 return 해줘서 True로 함수를 끝마치고

그 외에는 인수로 받은 num에 다시 num에서 -1 해준 값을 인수(argument)로써 fact 함수를 계속해서 돌려줍니다.

코드가 계속해서 진행되면서 처음 n 변수로 10이라는 정수를 받은 뒤에는

print 안에 있는 fact(n)n = 10이라는 인수(argument)가 들어가게 되고

10 * 9 * 8 * 7 * 6 * 5 * 4 * 3 * 2 * 1

위의 값이 쭉 나열되면서 마지막에 if문 num == 0이 되면서 return 1을 하며 함수를 종료하게 됩니다.

그러면 문제에서 구하고자 하는 10!의 값이 출력되면서 풀이는 끄-읏👏🏻

세한 코드가 궁금하신 분들은 아래 GitHub 코드를 참고해주세요🙏🏻

 

wook2124/Algorithm-Test

Practice algorithm. Contribute to wook2124/Algorithm-Test development by creating an account on GitHub.

github.com

최종 소스코드

댓글