티스토리 뷰
1. 문제
https://www.acmicpc.net/problem/9095
9095번: 1, 2, 3 더하기
문제 정수 4를 1, 2, 3의 합으로 나타내는 방법은 총 7가지가 있다. 합을 나타낼 때는 수를 1개 이상 사용해야 한다. 1+1+1+1 1+1+2 1+2+1 2+1+1 2+2 1+3 3+1 정수 n이 주어졌을 때, n을 1, 2, 3의 합으로 나타내는
www.acmicpc.net
2. 설명
DP로 접근했을 때,
n=4 일 때 경우의 수가
1 + 3 (1의 경우의 수 + 3)
2 + 2 (2의 경우의 수 + 2)
3 + 1 (3의 경우의 수 + 1)
n=5 일 때 경우의 수가
1 + 4 (1의 경우의 수 + 4)
2 + 3 (2의 경우의 수 + 3)
3 + 2 (3의 경우의 수 + 2)
4 + 1 (4의 경우의 수 + 1)
이다.
하지만 1, 2, 3으로만 나타내기 때문에 4를 더하는 경우는 제외해도 됨.
-> n-1, n-2, n-3 까지만 고려하면 된다.
따라서 dp[n] = dp[n-1] + dp[n-2] + dp[n-3]
3. 코드
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int T = scan.nextInt();
int[] n = new int[T];
int[] dp = new int[11];
for(int i=0; i<T; i++) {
n[i] = scan.nextInt();
}
dp[1] = 1;
dp[2] = 2;
dp[3] = 4;
for(int i=0; i<T; i++) {
for(int j=4; j<=n[i]; j++) {
dp[j] = dp[j-1] + dp[j-2] + dp[j-3];
}
System.out.println(dp[n[i]]);
}
}
}
'알고리즘 풀이 > 백준' 카테고리의 다른 글
백준 11726 2xn 타일링 JAVA (DP) (0) | 2020.07.04 |
---|---|
백준 1003 피보나치 함수 JAVA (DP) (0) | 2020.07.04 |
백준 1463 1로 만들기 JAVA (DP) (0) | 2020.07.02 |
백준 11723 집합 JAVA (bitmask 비트마스크) (0) | 2020.06.29 |
백준 11399 ATM JAVA (0) | 2020.06.28 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday