백준
오르막수
package bj;
import java.util.*;
public class bj_11057 {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
long[][] d = new long[n+1][11];
for(int i=0; i<10; i++)
{
d[1][i] = 1;
}
for(int i=2; i<=n; i++)
{
for(int j = 0; j<=9; j++)
{
for(int k =0; k<=j; k++)
{
d[i][j] += d[i-1][k];
}
}
}
for(int i = 0; i<10; i++)
{
d[n][10] += d[n][i];
}
System.out.println(d[n][10] % 10007);
}
}
d[i][j] : 길이가 i이고 마지막 숫자가 j인 오르막 수의 개수
틀린 문제다. 예제문제는 올바른 결과가 나오는데 제출했더니 틀렸다고 뜬다. 다른 예제로 틀린 부분을 찾아봐야할 문제이다.
스티커
public static void main(String args[]) {
Scanner sc = new Scanner(System.in);
int t = sc.nextInt();
for(int i = 1 ; i<=t;i++) {
int n = sc.nextInt();
int [][] d = new int[2][p+1];
int [][] d2 = new int[p+1][3];
for(int j=1; j<=n; j++) {
d[1][b]=sc.nextInt();
}
for(int j=2; j<=n; j++) {
d[2][b]=sc.nextInt();
}
for(int j=1; j<=p;j++) {
d2[j][0]=d2[j-1][0]+d2[j-1][1]+d2[j-1][2];
d2[j][1]=d2[j-1][0]+d2[j-1][2];
d2[j][2]=d2[j-1][0]+d2[j-1][1];
}
System.out.print(Math.max(d2[n][0],Math.max(d2[n][1],d2[n][2])));
}
점화식을 세오는데 시간이 좀 걸린 문제이다.
다이나믹 프로그래밍에 익숙해진 줄 알았는데 아직도 식세우는게 어렵다.