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

2021. 2. 4. 17:16·SW개발/코딩테스트

 

n = int(input())

for i in range(n):
    case = int(input())

    zero = [1, 0, 1]
    one = [0, 1, 1]

    if case >= 3 :
        for i in range(3, case+1):
            zero.append(zero[i-2]+zero[i-1])
            one.append(one[i-2]+one[i-1])

    print(zero[case], one[case])

 

코드 설명

기본적으로 피보나치 수의 3번째 까지는 0과 1이 등장한 횟수로 초기화하여 준다.

3이상의 숫자가 나올 경우 피보나치의 점화식을 이용하여 zero, one 리스트에 값을 추가하여 준다.

 

Point : DP 이론을 통하여 빠른 시간내에 구할 수 있는 문제이다. 값을 기억하면서 다음 계산에 이용하는 방식이다.

일단 3번째의 수 까지는 초기화를 통해 default 로 정해두고, 그 이상의 수가 나올 경우 피보나치 수열의 점화식 i-2 + i-1 을 이용하여 0과 1각 리스트를 따로 덧셈을 진행한다. 

이렇게 하면 0과 1이 출력되는 횟수는 누적이 되며 정답을 구할 수 있다.

728x90

'SW개발 > 코딩테스트' 카테고리의 다른 글

[백준]1904번 01타일 - DP  (0) 2021.02.06
[백준]9184번 신나는 함수 실행 - DP  (0) 2021.02.05
[백준]13305번 주유소 - 그리디  (0) 2021.02.03
[백준]1449번 수리공 항승 - 그리디  (0) 2021.02.02
[백준]4796번 캠핑 - 그리디  (0) 2021.02.01
'SW개발/코딩테스트' 카테고리의 다른 글
  • [백준]1904번 01타일 - DP
  • [백준]9184번 신나는 함수 실행 - DP
  • [백준]13305번 주유소 - 그리디
  • [백준]1449번 수리공 항승 - 그리디
Leffe_pt
Leffe_pt
개발자로서 성장하면서 배워온 지식과 경험을 공유하는 공간입니다.
  • Leffe_pt
    Leffe's tistory
    Leffe_pt
  • 전체
    오늘
    어제
    • 분류 전체보기 (309)
      • SW개발 (305)
        • 코딩테스트 (172)
        • 개발이야기 (23)
        • IT 용어 (17)
        • Python (22)
        • Django (46)
        • Flask (2)
        • Database (3)
        • SQLAlchemy (0)
        • Javascript (5)
        • Linux, Unix (3)
        • JAVA (2)
        • Spring (10)
      • 회고 (4)
      • 사진 (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    배달
    배달비 공유
    오픈소스
    g
    django
    어플리케이션
    라이프 스타일
    배공파용
    음식
    Contributor
    플레이스토어
    컨트리뷰터
    트리 #AVL #알고리즘 #자료구조
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
Leffe_pt
[백준]1003번 피보나치 함수 - DP
상단으로

티스토리툴바