728x90
반응형
https://www.acmicpc.net/problem/2482
1. Logic
해당 문제를 환형으로 보지말고 그냥 직선형으로 봐서 0번째 색깔을 선택하는 경우와 0번째 색깔을 선택하지 않는 경우 2가지로 나눠서 해결했다.
0번째 색깔을 을 선택하는 경우는 1번째 색깔을 절대로 선택 못하기 때문에 인덱스를 2로 올려준 후 함수로 전달한다.
0을 선택하지 않는 경우는 1번 색깔을 선택해도 되고 안해도 되기 때문에 인덱스는 1, cnt는 0 으로 넣어준다
2. Code
#include <bits/stdc++.h>
using namespace std;
int n, k;
int dp[1001][1001][2];
int vis[1001];
int solve(int idx, int cnt, int type) {
if(cnt == k) return 1;
if(idx == n-1 && cnt == k-1) {
if(type == 0) return 1;
else return 0;
}
if(idx >= n || cnt > k) return 0;
int &ret = dp[idx][cnt][type];
if(ret != -1) return ret;
ret = 0;
ret += solve(idx+1, cnt, type);
ret += solve(idx+2, cnt+1, type);
return ret %= 1000000003;
}
int main() {
ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0);
memset(dp, -1, sizeof(dp));
cin >> n >> k;
cout << (solve(1, 0, 0) + solve(2, 1, 1)) % 1000000003;
}
알고리즘 Solve 후 제가 생각한 Logic을 기록하는 개인 공부 블로그입니다.
내용 중 최적화가 가능한 부분등은 언제든지 댓글로 틀린 부분 및 피드백 주시면 공부 및 반영하겠습니다🧐
728x90
반응형
'Algorithm > Beakjoon' 카테고리의 다른 글
[백준/Baekjoon] 1240 노드사이의 거리 C++ :: Graph & BFS (2) | 2023.12.06 |
---|---|
[백준/Baekjoon] 9656 돌 게임 2 C++ :: Implementation (1) | 2023.12.06 |
[백준/Baekjoon] 2578 빙고 C++ :: Implementation (1) | 2023.12.04 |
[백준/Baekjoon] 2441 별 찍기 - 4 C++ :: Implementation (0) | 2023.12.03 |
[백준/Baekjoon] 4195 친구 네트워크 C++ :: Union find & Data structure (1) | 2023.12.03 |