본문 바로가기
CodeTree

코드트리 적절하게 숫자를 변경하

by 콩순이냉장고 2025. 10. 2.

문제 URL : https://www.codetree.ai/ko/trails/complete/curated-cards/challenge-change-number-properly/description

 

적절하게 숫자를 변경하기 설명 | 코드트리

적절하게 숫자를 변경하기를 풀며 문제 구성과 난이도를 파악해 적절한 알고리즘을 선정해보세요. 효율적인 코드 작성을 목표로 합니다.

www.codetree.ai

 

문제 접근법 : 

모든 경우를 다 만들어 보는겁니다. 그중 유사도가 가장높은것을 선택하고

dp+메모이제이션 기법으로 가지치기만 해주면 풀수있는 문제입니다.

 

소스코드:

 

 

 

#include<bits/stdc++.h>
using namespace std;
int n,m;
vector<int>v;
vector<vector<int>>dp[5];
int dfs(int num,int cur=0,int k=0){
    if(k>m)return -1e9;
    if(cur>=n)return 0;
    int &cache = dp[num][cur][k];
    if(cache!=-1)return cache;
    int res = (num==v[cur]);
    //5개의 값
    int score[5]={0};
    for(int i =1;i<=4;i++){
        score[i]=dfs(i,cur+1,k+(i!=num));
    }
    //그중 유사도가 가장높은것만 선택
    res+=max({score[1],score[2],score[3],score[4]});
    return cache = res;
}
int main() {
    cin>>n>>m;
    v= vector<int>(n);
    for(int i =0;i<=4;i++)dp[i]=vector<vector<int>>(n+1,vector<int>(m+1,-1));
    for(int i =0;i<n;i++){
        cin>>v[i];
    }

    //첫시작이 1,2,3,4
    cout<<max({dfs(1),dfs(2),dfs(3),dfs(4)});

}

 

 

 

궁금한점 혹은 모르는점 어떤 질문이든 댓글은

언제나 환영입니다.

'CodeTree' 카테고리의 다른 글

코드트리 신전 탐험하기 3  (0) 2025.10.02
코드트리 회전 마법진  (0) 2025.10.02
코드트리 수정 수집하기  (0) 2025.10.02
코드트리 신전 탐험하기 2  (0) 2025.10.02
코드트리 신전 탐험하기  (0) 2025.10.02