[백준 JAVA]9507 Generations of Tribbles

이성훈·2021년 9월 8일
0


문제는 되게 쉽다 그러나 연산시 int형이아닌 long형을 써야한다.
또, 배열[] 안의 숫자는 int형만되는것도 참고.

import java.util.Scanner;

public class Main {
	private static long dp_koong[] = new long[68]; 
	private static long input[];

	public static void main(String[] args) {
		//초깃값할당
		dp_koong[0] = 1;
		dp_koong[1] = 1;
		dp_koong[2] = 2;
		dp_koong[3] = 4;
		
		Scanner scanner = new Scanner(System.in);
		
		int test_count = scanner.nextInt();
		input = new long[test_count]; //테스트케이스 갯수만큼 할당
		
		//input배열에 받은 케이스별로 저장
		for(int i = 0 ; i < test_count ; i ++)
			input[i] = scanner.nextLong();
		
		//출력
		for (int i = 0; i < test_count; i++) {
			System.out.println(koong(input[i]));
		}

	}
	
	private static long koong(long number) {
		//초깃값만큼 리턴
		if(0 <= number && number <= 3)
			return dp_koong[(int) number];
		
		//이미 존재하면
		if(dp_koong[(int) number] != 0)
			return dp_koong[(int) number];
		
		for(int i = 4 ; i <= number ; i ++) {
				dp_koong[i] = dp_koong[i -1] + dp_koong[i -2] + dp_koong[i -3] + dp_koong[i -4];
		}
		
		return dp_koong[(int) number];
	}

}

처음부터 스캐너클래스로 nextInt로 받았으면 [] 블럭에서 int형으로 캐스트 안했어도 되겠다

https://www.acmicpc.net/problem/9507

profile
I will be a socially developer

0개의 댓글