URL : https://www.acmicpc.net/problem/11057
- 소스코드
public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); int[][] dp = new int[n+1][10]; for(int i=0; i<=9; i++){ dp[1][i] = 1; } for(int i=2; i<=n; i++){ for(int j=0; j<=9; j++){ //0~9까지 돌면서 자신보다 큰 수만 더해나가기. for(int k=j; k<=9; k++){ dp[i][j] += dp[i-1][k]; } dp[i][j] %= 10007; } } int ans = 0; for(int i=0; i<=9; i++){ ans += dp[n][i]; } System.out.println(ans); }
- My Thinking
이전 쉬운 계단수 문제(10844번)랑 비교했을 때 크게 달라지지 않아서 문제가 어렵지는 않았다. 추가된 점은 3중 for문을 이용해서 j (0<=j<=9) 보다 큰 값인 k라는 변수를 이용해서 오름차순인 경우의 수만 더해나가는 방식으로 문제를 해결하였다. |
'전공지식 > 알고리즘' 카테고리의 다른 글
[백준][DP][2011] 암호코드 (2) | 2016.12.17 |
---|---|
[백준][DP][2193] 이친수 (0) | 2016.12.15 |
[백준][DP][10844] 쉬운 계단 수 (0) | 2016.12.15 |
[백준][DP][11726] 2 x n 타일링 (0) | 2016.12.15 |
[알고스팟][완전탐색] 보글 게임 (0) | 2016.12.14 |