🧫 문제 분석
✔️ 출처
📖 문제

DP문제다.
중복 연산이 포함되어있다.
12번째는 12 + 4 로
번호를 매겨보면
11번째 + 7번째 를 더한 것이다.
그런데 4또한 3 + 1이며
번호를 매겨보면
6번째 + 2번째 를 더한 것이다.
이를 점화식으로 보면
dp[n] = dp[n-1] + dp[n-5]
이렇게 볼 수 있다.
이전값 + dp[n-5] 가 아닌 이유는
이전 값 또한 어떠한 숫자들의 덧셈 결과일 수 있기 때문이다.
🔅 문제 풀이
import java.io.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
int T = Integer.parseInt(br.readLine());
long[] dp = new long[101];
dp[1] = dp[2] = dp[3] = 1;
dp[4] = dp[5] = 2;
for (int i = 6; i <= 100; i++) {
dp[i] = dp[i - 1] + dp[i - 5];
}
for (int i = 0; i < T; i++) {
int n = Integer.parseInt(br.readLine());
bw.write(dp[n] + "\n");
}
bw.flush();
bw.close();
}
}
❗ 오답노트 / 필요한 지식
- 간단한 DP문제
'baekjoon > DP' 카테고리의 다른 글
백준 11053번 : 가장 긴 증가하는 부분 수열 자바 (0) | 2024.08.26 |
---|---|
백준 2839번 : 설탕 배달 자바 (0) | 2024.08.25 |
백준 2579번 : 계단 오르기 자바 (0) | 2024.08.15 |
백준 1436번 : 1로 만들기 자바 (0) | 2024.08.15 |
백준 2156번 : 포도주 시식 자바 (0) | 2024.08.07 |