LeetCode는 프로그래밍 문제를 풀며 코딩 실력을 향상할 수 있는 온라인 플랫폼입니다. 다양한 알고리즘 및 데이터 구조 문제를 제공하며, 면접 대비에 유용합니다. 해당 문제는, LeetCode Problems에서 볼 수 있는 난이도 '쉬움 (Easy)' 단계인 "N-th Tribonacci Number" 문제입니다.
--> https://leetcode.com/problems/n-th-tribonacci-number/description/
문제 :
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.
이 문제에서 Tribonacci 수열 Tn은 다음과 같이 정의됩니다: T0 = 0, T1 = 1, T2 = 1, 그리고 n >= 0에 대해 Tn+3 = Tn + Tn+1 + Tn+2. 주어진 n에 대해 Tn의 값을 반환하는 문제입니다. 예를 들어, n=4인 경우, T4는 4입니다.
피보나치수열이랑 로직은 똑같은 셈이죠.
class Solution {
public int tribonacci(int n) {
if (n == 0) return 0;
if (n == 1 || n == 2) return 1;
int[] dp = new int[n+1];
dp[0] = 0;
dp[1] = 1;
dp[2] = 1;
for (int i = 3; i <= n; i++) {
dp[i] = dp[i-1] + dp[i-2] + dp[i-3];
}
return dp[n];
}
}
이 코드는 주어진 정수 n에 대해 Tribonacci 수열의 n번째 값을 계산합니다. Tribonacci 수열은 T0 = 0, T1 = 1, T2 = 1로 시작하고, 그 이후의 값은 이전 세 값의 합으로 정의됩니다. 이 코드는 동적 계획법을 사용하여 효율적으로 값을 계산합니다.
- 기본 케이스 처리 :
- n이 0인 경우 0을 반환합니다.
- n이 1 또는 2인 경우 1을 반환합니다.
- 동적 계획법 배열 초기화 :
- n+1 크기의 배열을 생성하고 초기값을 설정합니다.
- 반복문을 통한 값 계산 :
- 3부터 n까지의 Tribonacci 수열 값을 계산하여 dp 배열에 저장합니다.
- 결과 반환 :
- dp 배열의 n번째 값을 반환합니다.
시간 및 공간 복잡도 :
- 시간 복잡도 :
- O(n) : 3부터 n까지 반복문을 통해 값을 계산하므로 시간 복잡도는 O(n)입니다.
- 공간 복잡도:
- O(n) : dp 배열을 사용하여 n+1개의 값을 저장하므로 공간 복잡도는 O(n)입니다.
이 코드는 동적 계획법을 사용하여 효율적으로 Tribonacci 수열의 값을 계산합니다. 각 단계에서 이전 세 단계의 값을 더하여 현재 값을 결정하는 방식으로, 피보나치수열보다 한 단계 더 복잡한 구조를 가지고 있습니다. 이 문제 또한 DP를 사용해야 했다는 점, 기억해 두시고요! DP가 알고리즘 문제에 되게 많이 나오는 것 같습니다.
'LeetCode' 카테고리의 다른 글
[LeetCode] - 3099. Harshad Number (0) | 2024.07.26 |
---|---|
[LeetCode] - 3136. Valid Word (0) | 2024.07.25 |
[LeetCode] - 70. Climbing Stairs (0) | 2024.07.25 |
[LeetCode] - 1387. Sort Integers by the Power Value (0) | 2024.07.25 |
[LeetCode] - 13. Roman to Integer (0) | 2024.07.25 |