본문 바로가기

알고리즘/백준

200921 팩토리얼(Python 3) 10872

www.acmicpc.net/problem/10872

 

10872번: 팩토리얼

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

www.acmicpc.net

 

문제

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

입력

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

출력

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

 

 

 For문을 이용한 소스코드(Python3) - 맞았습니다!!

 

n = int(input())

def Factorial(n) :
    result = 1

    for N in range(1, n+1) :
        result = result * N

    return result

print(Factorial(n))

잘못된 소스코드

처음 알고리즘 문제를 풀었는데, 계속 구문 오류가 났다...

n = input("n!를 구할 정수 n을 입력하세요(0 ~ 12) : ")
result = 1 

def Factorial(n) :

    for N in range(1, n+1) :
        global result *= N

    return result

print(Factorial(n))

잘못 1) input으로 받은 숫자는 문자다.

ex) "3"

 

잘못 2) 함수 안에서 전역 변수(global)를 수정할 수 없다.

ex) global result = 2

 

재귀 함수를 이용한 소스코드(Python3) - 런타임에러 ㅎㄷㄷ
n = int(input())

def Factorial(n) :
	if n==1 :
    	return 1
    return n * Factorial(n-1)

print(Factorial(n))

 

재귀 함수를 잘 이용을 못해서.. 참고 사이트..

dojang.io/mod/page/view.php?id=2353

 

파이썬 코딩 도장: 31.2 재귀호출로 팩토리얼 구하기

이번에는 재귀호출을 사용하여 팩토리얼을 구현해보겠습니다. 팩토리얼은 1부터 n까지 양의 정수를 차례대로 곱한 값이며 !(느낌표) 기호로 표기합니다. 예를 들어 5!은 5 * 4 * 3 * 2 * 1이며 결과는

dojang.io

 

알고리즘 문제를 처음 풀면서 깨달은 점) 

input안에 ""을 주고받으면 답이 틀렸다고 뜬다. "정수 입력하세요 : "로 이용하지 말고, 바로 input()으로 입력받자.