innn

10872번 : 팩토리얼 본문

코딩 테스트/파이썬 코딩테스트

10872번 : 팩토리얼

33삼 2022. 10. 4. 11:08

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

 

10872번: 팩토리얼

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

www.acmicpc.net

 

문제

 

수학의 팩토리얼 (!) 구하는 문제 

파이썬 math로 팩토리얼 모듈이 있을 것 같았지만, 일단 내가 아는 정의로 반복문으로 먼저 풀어보았다. 

파이썬에선 지금 상태로 for문이 제일 익숙해서 for문 이용.

 

팩토리얼을 for문으로 풀 때는 주의할 지점이 하나 있다. 팩토리얼 결과값의 변수를 선언시 처음 초기값 설정을 0이 아닌 1로 해야한다는 점(왜냐면 계속 곱해야하는 데 초기값에 0이 있으면 무한정 곱해도 0이니까)

 

코드 순서는 아래와 같다. 

 

1. 입력 값을 받을 변수 t 선언 int(input()) 으로 변수값 저장할 공간 만들어줌.

2. factorial_t 변수 공간 만들어주기. 이때, 초기화 값은 1로 지정한다.

3. for문으로 0부터 t-1만큼의 횟수만큼 반복(잊지말자. 자바도 그렇듯 파이썬 역시 처음 횟수나 인덱스는 0부터 시작. 

파이썬은 특히 범위의 마지막수는 제외되고 돌아가기 때문에 범위 0부터 t-1까지 돌리고 싶으면 in range(t)로 설정해주어야 한다. )

4. factorial *= i+1을 포문으로 돌려준다. 

이는 factorial * (i+1) x factorial 을 범위만큼 돌려준다는 뜻. 여기서 왜 i+1을 곱하냐? for문 인덱스가 0부터 시작이니까, 0+1인 1부터 곱해주어야 하니까 +1을 해준 것이다. 

5. factorial_t 값을 출력해준다. 

 

 

코드 1. for문 사용 

 

 

코드 2. import문으로 팩토리얼 모듈 가져오기 (매우 간단)

 

 

코드 3. 재귀함수 이용