순간을 성실히, 화려함보단 꾸준함을

[ boj : 22236 ] 가희와 비행기 본문

알고리즘,SQL/백준,BOJ

[ boj : 22236 ] 가희와 비행기

폭발토끼 2022. 1. 16. 10:26

https://www.acmicpc.net/problem/22236

 

22236번: 가희와 비행기

가희는 김포 공항에서 김해 공항까지 비행기를 타고 가려고 합니다. 비행기가 수평 방향으로 1만큼 이동하였을 때, 비행기의 고도는 1만큼 변화합니다. (상승 또는 하강) 비행기가 상승하거나

www.acmicpc.net

해설 : 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