문 제
소 스 코 드
#include <iostream>
constexpr int MOD { 1'000'000'003 };
int dp[1'001][1'001]; // N, K
// i번째 칸을 칠하는 경우 dp[i-2][j-1]
// 안칠 하는 경우 dp[i-1][j]
// N번째 칸의 경우,
// 칠할 경우 1번 칸을 칠해서는 안되고, N-1번 칸도 칠하면 안되기 때문에,
// dp[i][j] = dp[i-2][j-1] + dp[i-1][j]
int main() {
std::ios_base::sync_with_stdio(false);
std::cin.tie(NULL);
int N, K;
std::cin >> N >> K;
for (int i = 0; i <= N; ++i) {
dp[i][0] = 1;
dp[i][1] = i;
}
for (int i = 2; i <= N; ++i) {
for (int j = 2; j <= K; ++j) {
dp[i][j] = (dp[i - 2][j - 1] + dp[i - 1][j]) % MOD;
}
}
int answer{ (dp[N - 1][K] + dp[N - 3][K - 1]) % MOD };
std::cout << answer;
}
풀 이
-
다이나믹 플밍 / 점화식
출 력 값
문 제 출 처
문제 링크 : www.acmicpc.net/problem/2482
2482번: 색상환
첫째 줄에 N색상환에서 어떤 인접한 두 색도 동시에 선택하지 않고 K개의 색을 고를 수 있는 경우의 수를 1,000,000,003 (10억 3) 으로 나눈 나머지를 출력한다.
www.acmicpc.net
'[ ALGORITHM ] > [ 백 준 ]' 카테고리의 다른 글
[BAEKJOON] 17404번 : RGB 거리 2 (0) | 2020.09.19 |
---|---|
[BAEKJOON] 1086번 : 박 성 원* (0) | 2020.09.18 |
[BAEKJOON] 2098번 : 외판원 순회* (0) | 2020.09.17 |
[BAEKJOON] 11723번 : 집 합 (0) | 2020.09.16 |
[BAEKJOON] 1956번 : 운 동 (0) | 2020.09.15 |