https://www.acmicpc.net/problem/9461
import java.util.*;
import java.io.*;
public class Main {
static BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
static BufferedWriter bw=new BufferedWriter(new OutputStreamWriter(System.out));
static StringBuilder sb=new StringBuilder();
public static void main(String args[]) throws Exception {
int iter=Integer.parseInt(br.readLine());
long[] num=new long[100];
num[0]=num[1]=num[2]=1;
num[3]=num[4]=2;
for(int i=5;i<100;i++) {
num[i]=num[(i-1)]+num[(i-5)];
}
for(int j=0;j<iter;j++) {
int n=Integer.parseInt(br.readLine());
bw.write(num[n-1]+"\n");
}
bw.flush();
bw.close();
}
}
이 문제의 규칙을 찾으시면 문제의 해결 방법은 간단합니다.
삼각형을 따라서 그려보면 삼각형의 변의 길이는 아래와 같이 이어집니다.
1 1 1 2 2 3 4 5 7 9 12 ...
n번째 숫자의 값을 num[n]이라고 하면 num[n]=num[n-1]+num[n-5]가 됩니다.
이를 바탕으로 100번째 숫자까지 값을 배열에 저장한 후, for문을 통해서 원하는 인덱스의 값을 꺼내어 출력해주면 됩니다.
'프로그래밍 문제 > BOJ(백준 온라인 저지)' 카테고리의 다른 글
[BOJ 11053번] 가장 긴 증가하는 부분 수열(JAVA) (0) | 2020.08.05 |
---|---|
[BOJ 1463번] 1로 만들기(JAVA) (0) | 2020.08.04 |
[BOJ 1904번] 01 타일(JAVA) (0) | 2020.08.02 |
[BOJ 2748번] 피보나치 수 2(JAVA) (0) | 2020.08.02 |
[BOJ 1932번] 정수 삼각형(JAVA) (0) | 2020.08.02 |