Baekjoon

Baekjoon 11726번 2xn 타일링

ppwag 2020. 8. 9. 18:00

문제

https://www.acmicpc.net/problem/11726

걸린 시간

00 : 37 : 09

풀이

Python3

import sys

def recu(n):
    if n in dic:
        return dic[n]

    if n == 0:
        dic[n] = 1     
        return 1
    elif n < 0:
        return 0
    else:
        dic[n] = recu(n-1) + recu(n-2)
        return dic[n]

if __name__ == "__main__":
    sys.setrecursionlimit(1003)
    n = int(input())    

    visited = [0] * 1001
    dic = {}

    print(recu(n)%10007)

피보나치 수열 문제와 똑같다.

메모이제이션을 사용하지 않았을 때 복잡도는 O(2n)으로 문제의 최대입력인 1000에 가까운 수가 들어온다면 영원히 끝나지 않을 것 같다.

중복을 제거하면 O(n)의 복잡도를 갖게 된다.

'Baekjoon' 카테고리의 다른 글

Baekjoon 1074번 Z  (0) 2020.08.09
Baekjoon 11399번 ATM  (0) 2020.08.09
Baekjoon 1463번 1로 만들기  (0) 2020.08.09
Baekjoon 9095번 1, 2, 3 더하기  (0) 2020.08.09
Baekjoon 1697번 숨바꼭질  (0) 2020.08.08

댓글