- 코드 설명
- 입력이 양수이며 11보다 작다고해서 하나하나 쓰다가 규칙을 찾게 되었다.
- 규칙은 배열에 dp[0]=1, dp[1]=1, dp[2]=2를 넣은다음 dp[i] = dp[i-3] + dp[i-2] + dp[i-1]로 각 배열마다 값을 넣어주면 1,2,3의 합으로 표현할 수 있는 수가 나오는 것을 발견하였다.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main {
static int N,num;
static int[] dp;
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
N = Integer.parseInt(br.readLine());
dp = new int[11];
dp[0] = 1;
dp[1] = 1;
dp[2] = 2;
for (int i = 3; i<11;i++) {
dp[i] = dp[i-3] + dp[i-2] + dp[i-1];
}
for (int i = 0; i < N; i++) {
num = Integer.parseInt(br.readLine());
System.out.println(dp[num]);
}
}
}
'algorithm' 카테고리의 다른 글
[JAVA] 백준 1764번 : 듣보잡 (0) | 2020.07.26 |
---|---|
[JAVA] 백준 2839번 : 설탕 배달 (0) | 2020.07.23 |
[JAVA] 백준 1149번 : RGB 거리 (0) | 2020.07.18 |
[JAVA] 백준 1003번 : 피보나치 함수 (0) | 2020.07.18 |
[JAVA] 백준 2156번 : 포도주 시식 (1) | 2020.07.13 |