1236. N-th Tribonacci Number
Easy
The Tribonacci sequence Tn is defined as follows:
T0 = 0, T1 = 1, T2 = 1, and Tn+3 = Tn + Tn+1 + Tn+2 for n >= 0.
Given n
, return the value of Tn.
Example 1:
Input: n = 4
Output: 4
Explanation:
T_3 = 0 + 1 + 1 = 2
T_4 = 1 + 1 + 2 = 4
Example 2:
Input: n = 25
Output: 1389537
Constraints:
0 <= n <= 37
- The answer is guaranteed to fit within a 32-bit integer, ie.
answer <= 2^31 - 1
.
<내 코드>
class Solution:
def tribonacci(self, n: int) -> int:
t = [0 for _ in range(n + 1)]
if n < 1: return t[n]
t[1] = 1
if n < 2: return t[n]
t[2] = 1
if n < 3: return t[n]
i = 3
while i < n + 1:
t[i] = t[i-3] + t[i-2] + t[i-1]
i += 1
return t[-1]
- DP를 푸는데 문제의 조건 대부분에 해결을 위한 실마리가 있었음
예) 상황정의 / 점화식도출 / 초기조건 / 최종목표
모두 손쉽게 구할 수있었음
- 어제의 방법을 연습한다고 별도의 리스트를 선언하는 방식으로 해결함
=> 하지만 공각복잡도도 고민해보면 좋음
- 지속적으로 실수하는것이 엣지케이스임 한번만 여부를 고민해보자!
=> n이 0, 1인경우에 대해서 놓침
<모범사례>
class Solution:
def tribonacci(self, n: int) -> int:
if n == 0:
return 0
elif n == 1 or n == 2:
return 1
t0, t1, t2 = 0, 1, 1
for i in range(3, n + 1):
t3 = t0 + t1 + t2
t0, t1, t2 = t1, t2, t3
return t2
-초기조건에 대해서 미리 정의해서 엣지케이스 고려
- 공간복잡도 O(1)을 고려한 방식!
- range(3, n + 1) 을 해서 최소화 가능!
<보충학습>
- DP 의 목적
=> 전반적으로 살펴보면 최적화가 주요 목적으로 판단됨
- 최적화 경우
비용은 최소화 / 이익은 최대화 / 자원 활용 최적화
- 비용 절감: 제한된 예산 내에서 최대한의 효과를 거두기 위해 최적의 자원 할당을 계산할 때.
- 성능 향상: 시스템의 성능을 최적화하기 위해, 최적의 경로를 찾거나 중복된 작업을 줄이는 경우.
- 자원 관리: 제한된 자원을 최대한 효율적으로 활용하기 위한 계획을 세울 때.
- 위험 최소화: 최악의 상황을 피하기 위해 최소한의 손실을 보장하는 전략을 수립할 때.
'문제풀이 > 일일연습문제' 카테고리의 다른 글
[string]99클럽 코테 스터디 1일차 TIL + 프로그래머스/1/12916. 문자열 내 p와 y의 개수 (0) | 2024.10.28 |
---|---|
[DP]99클럽 코테 스터디 40일차 TIL + 0121-best-time-to-buy-and-sell-stock (11) | 2024.09.02 |
[DP]99클럽 코테 스터디 38일차 TIL + 0747-min-cost-climbing-stairs (2) | 2024.08.30 |
[Greedy]99클럽 코테 스터디 37일차 TIL + 0455-assign-cookies (0) | 2024.08.30 |
[Greedy]99클럽 코테 스터디 36일차 TIL + 0409-longest-palindrome (1) | 2024.08.29 |