https://www.acmicpc.net/problem/2240
2240번: 자두나무
자두는 자두를 좋아한다. 그래서 집에 자두나무를 심어두고, 여기서 열리는 자두를 먹고는 한다. 하지만 자두는 키가 작아서 자두를 따먹지는 못하고, 자두가 떨어질 때까지 기다린 다음에 떨어
www.acmicpc.net
[난이도] Gold5
[유형] DP
[풀이]
DP[t][w][k] : 현재 t초이며 w만큼 움직였고 k 위치에 있을 때 얻을 수 있는 최대 자두 개수.
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
int T,W,a[1001],dp[1001][31][2];
int sol(int t,int w,int k){
if(t>T) return 0;
int& ret = dp[t][w][k];
if(ret!=-1) return ret;
ret = (k==a[t]) + sol(t+1,w,k);
if(w<W) ret = max(ret,(k!=a[t]) + sol(t+1,w+1,!k));
return ret;
}
int main(){
scanf("%d%d",&T,&W);
for(int i=1;i<=T;i++) {
scanf("%d",&a[i]);
a[i]--;
}
memset(dp,-1,sizeof(dp));
printf("%d",sol(1,0,0));
}
https://github.com/has2/Problem-Solving/blob/master/boj-solved.ac/Gold5/2240.cpp
'Problem-Solving > BOJ' 카테고리의 다른 글
[BOJ/백준][Gold5] 6987 : 월드컵 (C++) (0) | 2022.01.23 |
---|---|
[BOJ/백준][Gold5] 14852 : 타일 채우기 3 (C++) (0) | 2022.01.23 |
[BOJ/백준][Gold5] 1034 : 램프 (C++) (0) | 2022.01.11 |
[BOJ/백준][Gold5] 1756 : 피자 굽기 (C++) (0) | 2022.01.11 |
[BOJ/백준][Gold5] 2229 : 조 짜기 (C++) (0) | 2022.01.11 |