Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- java
- 항해99
- 자바 강제 캐스팅
- 자바 삼항연산자
- 자바 if문
- react ag grid
- 자바 조건문
- 자바 for문
- 자바 public
- 자바 스캐너
- 자바 공배수
- 자바 구구단 출력
- Vue3
- react with typescript
- 자바 while문
- 자바
- MySQL
- Til
- 조코딩
- 자바 향상된 for문
- TypeScript
- 프로그래머스
- 타입스크립트
- 항해99 2기
- 자바 자동캐스팅
- 변수
- 자바 반복문
- 정보처리기사실기
- 자바 switch문
- 이클립스 DB연동
Archives
- Today
- Total
뇌 채우기 공간
[백준] 1002 피보나치 함수 파이썬 풀이 (동적계획법) 본문
문제
- 피보나치 함수를 구할때 0과 1이 몇 번 호출되는지 구하여라
문제 풀이
- fn_2 에 fibonacci(n-2)의 0의 개수와 1의 개수를 저장한다.
- fn_1에 fibonacci(n-1)의 0의 개수와 1의 개수를 저장한다.
- fn에 fibonacci(n)의 0의 개수와 1의 개수를 저장한다.
- fn의 0의 개수는 fn_1의 0의 개수와 fn_2의 0의 개수를 더한 것이다.
- fn의 1의 개수는 fn_1의 1의 개수와 fn_2의 1의 개수를 더한 것이다.
- fn에 저장해주고 나서 fn_1에 있던 값을 fn_2로 옮기고 fn에 있던 값을 fn_1로 옮긴다.
코드
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
|
num = int(input())
for i in range(num):
number = int(input())
fn_2 = [0,0] #f(n-2) 저장 0 인덱스의 값은 0이 나온 횟수 1인덱스의 값은 1이 나온 횟수
fn_1 = [0,0] #f(n-1) 저장
fn = [0,0] #fn 저장
if number == 0:
print('1 0')
elif number == 1:
print('0 1')
else:
for j in range(number+1):
if j == 0:
fn_2 = [1,0]
elif j == 1:
fn_1 = [0,1]
else:
fn[0] = fn_2[0] + fn_1[0]
fn[1] = fn_2[1] + fn_1[1]
fn_2[0],fn_2[1] = fn_1[0],fn_1[1]
fn_1[0],fn_1[1] = fn[0],fn[1]
print(fn[0], fn[1])
|
cs |
다른 사람의 풀이
t = int(input())
for i in range(t):
n = int(input())
zero = 1
one = 0
tmp = 0
for _ in range(n):
tmp = one
one = one + zero
zero = tmp
print(zero, one)
728x90
'알고리즘 > 백준 문제풀이' 카테고리의 다른 글
[백준] 11047 동전0 파이썬 풀이 (그리디) (0) | 2021.06.24 |
---|---|
[백준] 1541 잃어버린 괄호 파이썬 풀이 (그리디) (0) | 2021.06.24 |
[백준] 2231 분해합 파이썬 풀이 (브루트포스) (0) | 2021.06.24 |
[백준] 2798 블랙잭 파이썬 풀이 (브루트포스) (0) | 2021.06.24 |
[백준] 1002 터렛 파이썬 풀이 (기본 수학) (0) | 2021.06.24 |