일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
31 |
Tags
- DP
- appendleft
- 소수판별
- 프로그래머스
- python3
- 소수찾기
- 1일1솔
- popleft
- 완전탐색
- Python
- Java
- LCM
- spring
- mvc
- 그리디 알고리즘
- 합 구하기
- 파이썬
- C#강의
- 연관관계
- pypy3
- 백준
- JPA
- 인프런
- 누적합
- c#
- 우선순위큐
- deque
- BFS
- 브루투포스
- unity
Archives
- Today
- Total
jae_coding
[1day 1sol]피보나치 함수 본문
반응형
문제
https://www.acmicpc.net/problem/1003
1003번: 피보나치 함수
각 테스트 케이스마다 0이 출력되는 횟수와 1이 출력되는 횟수를 공백으로 구분해서 출력한다.
www.acmicpc.net
구현
- 0의 개수: fib(n-1)의 값과 동일
- 1의 개수: fib(n)과 동일
코드
import sys
input = sys.stdin.readline
def fib(num, memo):
if num == 0:
return 0
elif num == 1:
return 1
else:
if num not in memo:
memo[num] = fib(num-1, memo) + fib(num-2, memo)
return memo[num]
else:
return memo[num]
t = int(input())
for _ in range(t):
n = int(input())
dictionary = dict()
if n == 0:
print(1, fib(n, dictionary))
else:
print(fib(n-1, dictionary), fib(n, dictionary))
느낀점
dp 문제는 문제의 규칙을 이해하는 것이 정말 중요하다는 생각이 들었다. 그저 기능구현을 생각하다가 오래 걸릴뻔한 문제였다.
반응형
'알고리즘 문제 > one_day_one_sol' 카테고리의 다른 글
[1day 1sol] 부분합 (0) | 2022.09.17 |
---|---|
[1day 1sol] 최소힙 (0) | 2022.08.31 |
[1day 1sol] 점프왕 쩰리 (Small) (0) | 2022.08.31 |
[1day 1sol] 피보나치 수 5 (0) | 2022.08.30 |
[1day 1sol] 그룹 단어 체커 (0) | 2022.08.30 |
Comments