250x250
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 백준#boj#16932#모양만들기
- 백준#boj#12755
- 백준#BOJ#14501#퇴사#브루트포스
- 백준#BOJ#12865#평범한배낭
- 백준#BOJ#8012#한동이는영업사원
- 백준#BOJ#2615#오목
- 백준#BOJ#1939#중량제한
Archives
- Today
- Total
순간을 성실히, 화려함보단 꾸준함을
[ boj : 22236 ] 가희와 비행기 본문
https://www.acmicpc.net/problem/22236
해설 : d 의 제한이 4000이 MAX이니 그냥 2차원 배열 넉넉하게 선언해주면 됩니다.
파스칼의 삼각형 문제 처럼 대각선에서 값들을 가져와 저장해 주면 됩니다. 이때, 조심할 점은 오버플로,,,,,,,,,조심합니다. 모듈러 연산을 해준다고 해도 덧셈 연산을 진행할때 int 형의 범위를 벗어나는 경우가 생길 수도 있습니다.
#include<bits/stdc++.h>
using namespace std;
using ll = long long;
ll dp[8100][8100];
void solve();
int main()
{
ios::sync_with_stdio(false);
cin.tie(nullptr);
int t = 1;
while (t--)solve();
return 0;
}
void solve()
{
ll d, m;
cin >> d >> m;
dp[0][0] = 1;
for (ll i = 1; i <= d; i++) {
for (ll j = 0; j <= i; j++) {
if (j == 0)dp[i][j] = dp[i - 1][j + 1];
else if (j == i)dp[i][j] = dp[i - 1][j - 1];
else {
if (j - 1 == 0)dp[i][j] = dp[i - 1][j + 1];
else dp[i][j] = (dp[i - 1][j - 1] + dp[i - 1][j + 1]);
}
dp[i][j] %= m;
}
}
cout << dp[d][0];
}
'알고리즘,SQL > 백준,BOJ' 카테고리의 다른 글
[ boj : 7573 ] 고기잡이 (0) | 2022.01.22 |
---|---|
[ boj : 1301 ] 비즈 공예 (0) | 2022.01.17 |
[ boj : 22234 ] 가희와 은행 (0) | 2022.01.15 |
[ boj : 22232 ] 가희와 파일 탐색기 (0) | 2022.01.10 |
[ boj : 22233 ] 가희와 키워드 (0) | 2022.01.09 |