https://www.acmicpc.net/problem/9461
import sys
input = sys.stdin.readline
n = int(input().strip())
num_list = [int(input().strip()) for _ in range(n)]
max_num = max(num_list)
answer_list = [0,1,1] + ([0] * (max_num-2))
for num in num_list:
if answer_list[num] == 0:
for i in range(3,num+1):
answer_list[i] = answer_list[i-2] + answer_list[i-3]
print(answer_list[num])
처음에는 어떻게 풀지 막막했지만 자신의 위치에 2개전과 3개전 값을 더한값이 현재 값이라는 규칙을 발견을 해서 풀었다. 이 문제는 규칙을 발견하기만 하면 쉽게 풀리는 문제 같다.
'백준 문제 풀이 및 피드백' 카테고리의 다른 글
2023.01.27 Z 백준[파이썬] (0) | 2023.01.27 |
---|---|
2023.01.25 경로찾기 백준[파이썬] (0) | 2023.01.25 |
2023.01.20 집합 백준[파이썬] (0) | 2023.01.20 |
2023.01.20 마인크래프트 백준[파이썬] (0) | 2023.01.20 |
2023.01.19 연결요소의 개수 백준[파이썬] (0) | 2023.01.19 |