티스토리 뷰
- 계단 수나 이번 문제나 표에 정리하여 접근해야 겠다. 메모장에 기록하니 이중배열의 문제의 경우 전 행의 숫자들을 활용하가 어려운 것 같다.
- Memo
- 문제 정의
- 이중배열을 사용하여 접근한다.
- 계단 수는 맨앞의 숫자를 기준으로 규칙을 세우는 것이고 이번 문제는 맨 뒤의 숫자를 기준으로 규칙을 세운다.
- 최종으로 구해야 할 값은 n행의 모든 값을 더한 값이다.
- n-1, n-2, ... 행의 오르막 수는 이미 n행에 포함되어있다.
- 방법
- 먼저 1행의 모든 값을 1로 초기화 시킨다.
- n행의 각각의 열을 구할 때에는
- 행을 구하는 i를 n까지 돌리는 for문
- 열의 마지막 값까지 구하는 j를 9까지 돌리는 for문
- i행 j열에 해당하는 값을 구하는 k가 j까지 돌아가는 for문을 정의
- 이러한 for문 안에서 dp[i][j] 의 값을 각각 구하고 n행의 모든 값을 더해주면 된다.
- 문제 정의
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
sc.close();
long dp[][] = new long[n+1][10];
int result = 0;
for(int i = 0; i < 10; i++) {
dp[1][i] = 1;
}
for(int i = 2; i <= n; i++) {
for(int j = 0; j < 10; j++) {
for(int k = 0; k <= j; k++) {
dp[i][j] += dp[i-1][k];
}
dp[i][j] %= 10007;
}
}
for(int i = 0; i < 10; i++) {
result += dp[n][i];
}
System.out.println(result % 10007);
}
}
'algorithm' 카테고리의 다른 글
[DP] 2156 (0) | 2020.04.23 |
---|---|
[DP] 9465, 2156 (0) | 2020.04.22 |
[DP] 타일링 문제 11726, 11727, 9095 (0) | 2020.04.15 |
[DP] 1463번 (0) | 2020.04.14 |
[입출력] 별찍기 10992, 10991, 2446 (0) | 2020.04.12 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- client side rendering
- 인접행렬
- 배열
- 스텍
- react
- 동적프로그래밍
- 알고리즘
- 최단경로
- C
- BFS
- 이진탐색
- Java
- 세마포어
- 입출력장치
- 운영체제
- javascript
- 재귀함수
- 클래스
- 퀵정렬
- 소프트웨어
- 자료구조
- 교착상태
- Stack
- 인접리스트
- dfs
- server side rendering
- 구조체
- stackframe
- C++
- 병행프로세스
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
글 보관함