Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- 분할정복
- 프로그래머스
- Java
- 그래프 자바
- 카카오
- 백준
- 자바 5464
- 리트코드 자바
- daily challenge
- 인텔리제이 에러
- 코딩테스트
- 파이썬
- 자바
- 스택
- 백준 18222
- java leetcode
- 백준 16935
- 리트코드
- java 프로그래머스
- leetcode
- 코테
- BFS
- leetcode 1721
- 구현
- 스프링 에러
- 자바 리트코드
- 리트코드 1557
- 프로그래머스 java
- dfs
- DP
Archives
- Today
- Total
레벨업 일지
[Java/Python] leetcode 1137. N-th Tribonacci Number 본문
문제
https://leetcode.com/problems/n-th-tribonacci-number/description/
트라이보나치 수열 값을 구해서 리턴할 것.
알아야 할 개념
- 메모이제이션
풀이
풀이는 다음과 같다.
- 현재 값 n 일때 트라이보나치 값을 메모할 배열을 만들고 초기화를 한다.
- 현재 값이 메모돼있으면, 그 값을 리턴
- 재귀로 n-1, n-2 , n-3 값을 확인하여 현재 값에다 저장하고 리턴한다.
코드
자바
class Solution {
int memo[];
public int tribonacci(int n) {
memo = new int[38];
Arrays.fill(memo, -1);
memo[0] = 0;
memo[1] = 1;
memo[2] = 1;
return helper(n);
}
public int helper(int n){
if(memo[n] > -1)return memo[n];
for(int i = 1 ;i < 4 ;i++)
memo[n-i] = helper(n-i);
return memo[n] = memo[n-1] + memo[n-2] + memo[n-3];
}
}
파이썬
class Solution:
def tribonacci(self, n: int) -> int:
memo = [0]*3
memo[0] = 0
memo[1] = 1
memo[2] = 1
for i in range(3,n+1):
memo.append(memo[i-1]+memo[i-2]+memo[i-3])
return memo[n]
'알고리즘 > leetcode' 카테고리의 다른 글
[Java] leetcode 1626. Best Team With No Conflicts (0) | 2023.02.12 |
---|---|
[Java] leetcode 1626. Best Team With No Conflicts (0) | 2023.02.01 |
[Java] leetcode 352. Data Stream as Disjoint Intervals (0) | 2023.01.28 |
[Java] leetcode 787. Cheapest Flights Within K Stops (0) | 2023.01.27 |
[Java] leetcode 909. Snakes and Ladders (0) | 2023.01.25 |
Comments