[BOJ]18511 큰 수 구성하기

강동현·2023년 12월 23일
0

코딩테스트

목록 보기
38/111
  • 재귀 문제 풀이 4단계
  • 1단계: 굳이성: 문제 풀이를 위함이라 굳이 써야 함
  • 2단계: BaseCondition: a > N 이상의 수가 되면 종료
  • 3단계: 점화식: 점화식을 수학 공식을 통해 만들어야 함
  • 3-1단계: 분해: 수가 정방향으로 증가하도록 dfs(a+vec[i]n,n10)dfs(a + vec[i] * n, n * 10) 설계
  • 3-2단계: 조합: max 값을 조합해 최종 값 도출
#include <bits/stdc++.h>
using namespace std;
int N, K, tmp, ans = 0;
vector<int> vec;
void dfs(int a, int n){
    if(a > N) return;
    ans = max(ans, a);
    for(int i = 0; i < vec.size(); ++i){
        dfs(a + vec[i] * n, n * 10);
    }
}
int main(){
    cin >> N >> K;
    for(int i = 0; i < K; ++i){
        cin >> tmp;
        vec.push_back(tmp);
    }
    dfs(0, 1);
    cout << ans;
    return 0;
}
profile
GAME DESIGN & CLIENT PROGRAMMING

0개의 댓글