728x90
문제
다음의 점화식에 의해 정의된 수열 t(n)을 생각하자:
- t(0)=1
- t(n)=t(0)*t(n-1)+t(1)*t(n-2)+...+t(n-1)*t(0)
이 정의에 따르면,
- t(1)=t(0)*t(0)=1
- t(2)=t(0)*t(1)+t(1)*t(0)=2
- t(3)=t(0)*t(2)+t(1)*t(1)+t(2)*t(0)=5
- ...
주어진 입력 0 ≤ n ≤ 35에 대하여 t(n)을 출력하는 프로그램을 작성하시오.
입력
첫째 줄에 n (0 ≤ n ≤ 35)이 주어진다.
출력
첫째 줄에 t(n)을 출력한다.
풀이
다이나믹 프로그래밍으로 문제의 점화식을 만족시키면된다.
값은 int의 범위를 벗어나기에 long을 이용하여 풀었다.
처음의 값을 1로 주고 점화식을 만들어서 모든 값을 저장하고 마지막에 index를 이용하여 값을 출력
코드
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
int n=sc.nextInt();
Long [] dp=new Long [40];
dp[0]=(long) 1;
for(int i=1;i<=35;i++) {
dp[i]=(long) 0;
for(int j=0;j<i;j++)
dp[i]+=dp[j]*(dp[i-j-1]);
}
System.out.println(dp[n]);
}
}
728x90
728x90
'Algorithm > Baekjoon' 카테고리의 다른 글
Baekjoon 1755 숫자놀이 JAVA (0) | 2022.04.30 |
---|---|
Baekjoon 9996 한국이 그리울 땐 서버에 접속하지 JAVA (0) | 2022.04.30 |
Baekjoon 10942 팰린드롬? DP JAVA (0) | 2022.04.30 |
Baekjoon 10942 팰린드롬? JAVA (0) | 2022.04.30 |
Baekjoon 1026 보물 JAVA (0) | 2022.04.27 |
댓글