itisjustK
코딩과 사람 사는 이야기
itisjustK
전체 방문자
오늘
어제
  • 분류 전체보기 (207)
    • 일이삼사오육칠팔구십일이삼사오육칠팔구십일이삼사오육칠.. (0)
    • Web (43)
      • html & css (9)
      • django & python (15)
      • java script (9)
    • iOS (51)
      • Swift (42)
      • SwiftUI (5)
    • CS (25)
      • 자료구조 (6)
      • 운영체제 (3)
      • 데이터베이스 (9)
      • 네트워크 (7)
    • PS (34)
      • 알고리즘 & 자료구조 (0)
    • Life (36)
    • Retrospective (15)
    • Book (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 어플
  • CS
  • SwiftUI
  • nosql
  • 생활코딩
  • 개발자
  • AppleDevloperAcademy
  • CoreData
  • 연결리스트
  • 생활코딩 #이고잉 #HTML #코딩 #개발자
  • POSTECH
  • 점주
  • mongodb
  • ios
  • 독립서점
  • SWIFT
  • 세그멘테이션
  • 킨디
  • crud
  • binding

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
itisjustK

코딩과 사람 사는 이야기

[ 백준 1003 - 피보나치 함수 ]
PS

[ 백준 1003 - 피보나치 함수 ]

2021. 8. 10. 19:28

 

풀이

 

t=int(input())
a=[int(input())for _ in range(t)]

def f(n):
    if n == 1 : 
        return 0
    elif n == 2 : return 1
    fib_array = [0,1]
    for i in range(2,n+1):
        num = fib_array[i-1]+fib_array[i-2]
        fib_array.append(num)
    return fib_array[n-1]

for k in a:
    print(f(k),f(k+1))

 

  • 처음에 단순히 피보나치 수열 찾아가는 과정을 거치며 0과 1이 나올 때마다 각각 +1씩 카운트 해주면 되겠다는 생각을 했다
  • 하지만 그러려면 top-down 방식이 필요할 것이라 생각했는데 이는 연산 과정이 너무 오래 걸린다. ( top-down이 너무 오래 걸리기 때문에 배열을 만들어서 처음부터 하는 bottom-up 방식을 사용하는 것임
  • 놓쳤던 부분 : 0과 1의 변화 추이를 보면 각각 피보나치 형태로 값이 증가한다는 것을 알 수가 있었다. 또한 도식표를 이용하여 살펴보면 왜 피보나치 꼴로 증가하는 지 알 수 있다.

0과 1의 변화 추이

  0 1
0 1 0
1 0 1
2 1 1
3 1 2
4 2 3
5 3 4

역시나 DP 문제에서는 규칙성을 찾는 것이 가장 중요하다. 규칙성이 안보인다면 구해야 하는 수를 쭉 나열해서 찾는 것도 최후의 방법이다.

저작자표시 (새창열림)

'PS' 카테고리의 다른 글

[프로그래머스 - Swift] 다리를 지나는 트럭  (0) 2023.01.19
[ 백준 2579 - 계단 오르기 ]  (0) 2021.08.11
[백준 11726 - 2 x n 타일링] DP  (0) 2021.08.09
DP ( Dynamic Programming, 동적 계획법 )  (0) 2021.08.09
[ 프로그래머스 - 타켓 넘버 ] DFS  (0) 2021.08.06
    'PS' 카테고리의 다른 글
    • [프로그래머스 - Swift] 다리를 지나는 트럭
    • [ 백준 2579 - 계단 오르기 ]
    • [백준 11726 - 2 x n 타일링] DP
    • DP ( Dynamic Programming, 동적 계획법 )
    itisjustK
    itisjustK

    티스토리툴바