반응형
<DP코드>
#include <algorithm>
#include <iostream>
using namespace std;
long long DP[101][10];
int N;
long long ans = 0;
int main()
{
//한자리수들 1로 지정
for (int i = 0; i <= 9; i++) DP[1][i] = 1;
cin >> N;
//두자리수 이상일때
for (int i = 2; i <= N; i++)
{
DP[i][0] = (DP[i - 1][1]) % 1000000000;
DP[i][9] = (DP[i - 1][8]) % 1000000000;
for (int j = 1; j <= 8; j++)
DP[i][j] = (DP[i - 1][j - 1] + DP[i - 1][j + 1]) % 1000000000;
}
//맨 앞자리가 각각 i일때 DP값을 취합
for (int i = 1; i <= 9; i++) ans += DP[N][i];
cout << ans % 1000000000;
}
코드가 계속 틀렸다고 나와서 입력값으로 100을 넣어보니 음수가 나왔다. 즉, long long 자료형의 범위를 넘어서는 값까지 올라간다는 얘기였다. 그리고 DP를 10억으로 나눴음에도 ans를 다시 10억으로 나눠주는 이유는 DP값들을 더했을 때 ans값이 또 10억을 넘을 수 있기 때문에 마지막 출력전에 한번더 10억으로 나눠준다.
반응형
'🧩PS > 🥈Nomal' 카테고리의 다른 글
[C/C++] 백준 2156번 - 포도주 시식(DP) (0) | 2020.11.25 |
---|---|
[C/C++] 백준 11721번 - 열 개씩 끊어 출력하기 (0) | 2020.11.22 |
[C/C++] 백준 1932번 - 정수 삼각형(DP) (0) | 2020.11.22 |
[C/C++] 백준 1149번 - RGB거리(DP) (0) | 2020.11.01 |
[C/C++] 백준 9461번 - 파도반 수열(DP) (0) | 2020.10.19 |