19-20 동계 모각코 동아리 5회차 결과

 

백준

오르막수

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])));
		}

점화식을 세오는데 시간이 좀 걸린 문제이다.

다이나믹 프로그래밍에 익숙해진 줄 알았는데 아직도 식세우는게 어렵다.