Dynamic 백준 알고리즘 자바 9461 ‘파도반 수열’ 문제풀이

less than 1 minute read

Problem

파도반 수열 P(N)은 나선에 있는 정삼각형의 변의 길이이다. P(1)부터 P(10)까지 첫 10개 숫자는 1, 1, 1, 2, 2, 3, 4, 5, 7, 9이다. N이 주어졌을 때, P(N)을 구하는 프로그램을 작성하시오.

Input
첫째 줄에 테스트 케이스의 개수 T가 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있고, N이 주어진다. (1 ≤ N ≤ 100)

Output
각 테스트 케이스마다 P(N)을 출력한다.

Solution

점화식만 찾으면 되는데 그게 너무 쉬워서 왜 이 레벨인지 모르겠는.. 그런 문제! 그러나 입력값 n의 범위가 100까지 되는데, 그게 int 자료형으로는 커버가 안 되서 반드시 long타입을 써줘야 한다.

Code

import java.util.Scanner;
public class Main {
	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);
		int tc = scan.nextInt(), n;
		
		for(int i = 0; i < tc; i++) {
			n = scan.nextInt();
			long[] dp = new long[n+1];
			dp[1] = 1;
			if(n >= 2) dp[2] = 1;
			for(int j = 3; j < n+1; j++)
				dp[j] = dp[j-2] + dp[j-3];
			System.out.println(dp[n]);
		}
	}
}

Tags:

Updated: