팩토리얼 성공분류
시간 제한 |
메모리 제한 |
제출 |
정답 |
맞은 사람 |
정답 비율 |
1 초 |
256 MB |
54695 |
25674 |
21955 |
47.738% |
https://www.acmicpc.net/problem/10872
문제
0보다 크거나 같은 정수 N이 주어진다. 이때, N!을 출력하는 프로그램을 작성하시오.
입력
첫째 줄에 정수 N(0 ≤ N ≤ 12)가 주어진다.
출력
첫째 줄에 N!을 출력한다.
알고리즘 분류
백준 알고리즘 # 10872번 : 팩토리얼
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 코드를 참고해주세요🙏🏻
최종 소스코드
'코딩테스트 > 백준 알고리즘' 카테고리의 다른 글
백준 알고리즘 | 13458 : 시험 감독 (Python / 파이썬) (0) | 2020.12.13 |
---|---|
백준 알고리즘 | 2441 : 별 찍기 - 4 (Python / 파이썬) (2) | 2020.12.12 |
백준 알고리즘 | 11726 : 2 x n 타일링 (Python / 파이썬) (0) | 2020.12.09 |
백준 알고리즘 | 1920 : 수 찾기 (Python / 파이썬) (0) | 2020.12.06 |
백준 알고리즘 | 2579 : 계단 오르기 (Python / 파이썬) (0) | 2020.11.29 |
댓글