코딩테스트 연습 기록

이종길·2022년 3월 22일
0

코딩테스트 연습

목록 보기
116/128

2022.03.22 87일차

백준 13699번 (점화식)

문제

다음의 점화식에 의해 정의된 수열 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)을 출력하는 프로그램을 작성하시오.

나의 풀이

  1. 이중for문 활용해서 앞, 뒤 인덱스 설정하기
  2. 뒤의 인덱스는 n - 1까지, 앞의 인덱스는 0부터 구하기
  3. DP 형식으로 풀이
import java.io.*;
import java.util.*;

public class Main {
    static long[] dp;
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        int n = Integer.parseInt(br.readLine());

        dp = new long[n + 1];
        dp[0] = 1;

        for (int i = 1; i <= n; i++) {
            long temp = 0;
            for (int j = i; j >= 1; j--) {
                temp += dp[i - j] * dp[j - 1];
            }
            dp[i] = temp;
        }

        System.out.println(dp[n]);
    }
}

생각하기

  • DP 문제 풀이 연습
profile
Go High

0개의 댓글

관련 채용 정보