10872번: 팩토리얼
풀이
팩토리얼은 3가지 방법으로 풀었다. 재귀 함수로 한번, 반복문을 이용해 한번, 파이썬 자체적인 내장함수를 이용해 한번. 내장함수를 쓰는 방법이 제일 오래 걸렸다.
# 10872 팩토리얼
# 첫 번째 방법: 재귀함수
def fact(N):
if N > 0:
return N * fact(N-1)
else:
return 1
N = int(input())
ret = fact(N)
print(ret)
# 두 번째 방법 : 반복문 활용
N = int(input())
sum = 1
for i in range(N, 0, -1):
sum *= i
print(sum)
# 세 번째 방법: math.factorial() 함수 활용 72ms로 이게 제일 시간 오래 걸림.
import math
N = int(input())
print(math.factorial(N))
10870번: 피보나치 수 5
풀이
피보나치 수열은 재귀 함수를 만들어서 풀었는데, 하다보니 Fibo(3), Fibo(4) 처럼 값이 이미 저장되어 있다면 더 빨리 풀 수 있을 것 같다는 생각을 했다. 이게 DP인 걸로 알고 있는데 나중에 동적 계획법을 배우면 적용해서 더 빨리 풀어볼 수 있을 듯.
# 10870 피보나치 수 5 (72ms)
# DP를 배우면 이미 배열에 값이 저장된 애는 패스하는 방법으로 시간을 단축할 수 있겠지.
def Fibo(N):
if N > 2:
arr[N] = Fibo(N-1) + Fibo(N-2)
elif N > 0:
arr[N] = 1
else:
arr[N] = 0
return arr[N]
N = int(input())
arr = [0 for _ in range(N+1)]
ret = Fibo(N)
print(ret)
'개발 공부 > 알고리즘 문제풀이' 카테고리의 다른 글
[백준] 2447. 별 찍기 - 10 (0) | 2022.08.02 |
---|---|
[백준] 17478. 재귀함수가 뭔가요? (0) | 2022.08.02 |
[백준] 4948. 베르트랑 공준 (0) | 2022.07.31 |
[백준] 1929. 소수 구하기 (0) | 2022.07.31 |
[백준] 11653. 소인수분해 (0) | 2022.07.31 |