일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 백트래킹
- 알고리즘
- 2023
- 너비 우선 탐색
- back propagation
- lazy propagation
- 가끔은_말로
- 자바스크립트
- 플로이드 와샬
- 회고록
- Overfitting
- 미래는_현재와_과거로
- 문자열
- NEXT
- 조합론
- 이분 탐색
- dropout
- DP
- object detection
- 크루스칼
- 분할 정복
- BFS
- 다익스트라
- tensorflow
- 세그먼트 트리
- 우선 순위 큐
- dfs
- 가끔은 말로
- c++
- pytorch
Archives
- Today
- Total
Doby's Lab
[알고리즘] 백준 11057번: 오르막 수 (C++) 본문
https://www.acmicpc.net/problem/11057
0 이후에는 0~9 사이의 수
1 이후에는 1~9 사이의 수
...
이와 같은 규칙이 존재하는 것을 알고 2차원 배열을 선언하여
cache[n번째 자릿 수][0~9사이의 수]로 선언하고, [n - 1번째 자릿수]가 [0~9사이의 수 중 하나]일 때 몇 가지 수가 나올 수 있는지 계산해주면 된다.
[점화식]
(n != 1 && n != 2)일 때 다음을 만족한다.
for (int k = 9; k >= j; k--) {
cache[n][j] += cache[n - 1][k];
}
[MOD의 위치]
아무 생각 없이 10007을 나눈 나머지 값을 넣다가 오답이 떴다.
for (int i = 3; i <= n; i++) {
for (int j = 0; j <= 9; j++) {
for (int k = 9; k >= j; k--) {
cache[i][j] += cache[i - 1][k] % MOD;
}
}
}
이 위치에 넣어도 나머지 정리( (a + b)modN = (amodN + bmodN) modN )로 인해 맞는 말이지만
제일 안 박스에 있는 for문을 끝내고도 나머지 연산을 해줘야 한다.
for (int i = 3; i <= n; i++) {
for (int j = 0; j <= 9; j++) {
for (int k = 9; k >= j; k--) {
cache[i][j] += cache[i - 1][k] % MOD;
}
cache[i][j] %= MOD;
}
}
[AC 코드]
#include <iostream>
#define MAX 1000 + 1
#define MOD 10007
using namespace std;
int n;
int cache[MAX][10];
int main() {
cin >> n;
// 초기화
for (int i = 0; i < 10; i++) {
cache[1][i] = 1;
}
for (int i = 0; i < 10; i++) {
cache[2][i] = 10 - i;
}
for (int i = 3; i <= n; i++) {
for (int j = 0; j <= 9; j++) {
for (int k = 9; k >= j; k--) {
cache[i][j] += cache[i - 1][k] % MOD;
}
cache[i][j] %= MOD;
}
}
int result = 0;
for (int i = 0; i <= 9; i++) {
result += cache[n][i];
}
cout << result % MOD;
return 0;
}
728x90
'PS > BOJ' 카테고리의 다른 글
[알고리즘] 백준 5792번: 택배 배송 (C++) (0) | 2021.12.06 |
---|---|
[알고리즘] 백준 11779번: 최소비용 구하기 2 (C++) (0) | 2021.12.06 |
[알고리즘] 백준 1707번: 이분 그래프 (C++) (0) | 2021.12.05 |
[알고리즘] 백준 5719번: 특정한 최단 경로 (C++), 경로 역추적(2) (0) | 2021.12.05 |
[알고리즘] 백준 1719번: 택배 (C++), 경로 역추적 (0) | 2021.12.05 |