Back/Algorithm

백준 1904 01타일 파이썬

백준 1904 01타일 파이썬

www.acmicpc.net/problem/1904

 

1904번: 01타일

지원이에게 2진 수열을 가르쳐 주기 위해, 지원이 아버지는 그에게 타일들을 선물해주셨다. 그리고 이 각각의 타일들은 0 또는 1이 쓰여 있는 낱장의 타일들이다. 어느 날 짓궂은 동주가 지원이

www.acmicpc.net

n = int(input())

# 전체를 창고화 하기
save = [0] * 1000000

# n이 1이면 어차피 1밖에 못옴
# n이 2면 어차피 00 이나 , 11 밖에 못 옴
save[1] = 1
save[2] = 2

# 1,2를 앞에서 고정헀으니 3부터 돌아감
for i in range(3, n+1):
    # i번쨰의 경우의 수는 i-1번째와 i-2번째 경우의수를 합한 것과 같다.
    # 즉, 수가 높아질 때 마다 계속 새로 계산할 필요 없이
    # 위의 창고에다가 계산한 값들을 저장해준다.
    # 처음에 1,2가 저장되어 있으니, for문에서 3부터 돌아갈 때 1,2를 기점으로
    # 계속해서 계산한 값들을 창고에 채워나가다 i를 만나면 출력할 것이다.
    save[i] = (save[i-1] + save[i-2]) % 15746
    # 문제 조건에서 주어진 모든 2진 수열의 개수를 15746으로 나눈 나머지라서 15746을
    # 구해야하는 값인 save[i] 에 넣어둔다.
print(save[i])

피보나치 수열을 dp이용해서 푸는 문제다.

 

해당 영상은 복습 과제로 찍었다.

 

https://youtu.be/yaeHBhx7JcU

 

'Back > Algorithm' 카테고리의 다른 글

[JavaScript] Queue  (0) 2022.09.07
백준 1065 한수 파이썬  (0) 2021.03.18
프로그래머스 카카오 인형 뽑기 파이썬  (0) 2021.03.18
백준 10870 피보나치수5 파이썬  (0) 2021.03.17
Python 백준 1436 영화감독  (0) 2021.03.15