문제를 보자마자 저걸 다 계산하는 프로그램은 시간이 엄청 걸릴 것이라고 생각했다
따라서 점화식을 만들어서 그에 대한 배열로 각 각의 요소의 값을 넣는 방식으로 코드를 짜야겠다고 구상
<점화식>
n=4 일때
맨 앞 이 1 + (n=3일때 방법의 수)
맨 앞 이 2 + (n=2일때 방법의 수)
맨 앞 이 3 +(n=1일때 방법의 수)
점화식 ==> arr[i]=arr[i-1]+arr[i-2]+arr[i-3];
코드
package baekjoon;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.Scanner;
public class Main {
public static void main(String[] args){
Scanner scanner = new Scanner(System.in);
int t=scanner.nextInt();
int[] arr = new int[12];
arr[1]=1;
arr[2]=2;
arr[3]=4;
for(int i=4; i<=11; i++) {
arr[i]=arr[i-1]+arr[i-2]+arr[i-3];
}
for(int i=0; i<t; i++) {
int n=scanner.nextInt();
System.out.println(arr[n]);
}
}
}
'알고리즘 > 백준' 카테고리의 다른 글
백준-11053번/가장 긴 증가하는 부분 수열 (java) (0) | 2024.02.18 |
---|---|
백준-2193번/이친수 (java) (1) | 2024.02.14 |
백준-10844번/쉬운 계단 수 (java) (2) | 2024.02.13 |
백준-15990번/1, 2, 3 더하기 5 (java) (0) | 2024.02.09 |
백준-11052번/카드 구매하기 (6) | 2024.02.08 |