Algorithm 🧑🏻‍💻/백준(BOJ)

[백준,c++] 18511번 - 큰 수 구성하기

dkswnkk 2022. 4. 3. 23:38

문제

 

18511번: 큰 수 구성하기

첫째 줄에 N, K의 원소의 개수가 공백을 기준으로 구분되어 자연수로 주어진다. (10 ≤ N ≤ 100,000,000, 1 ≤ K의 원소의 개수 ≤ 3) 둘째 줄에 K의 원소들이 공백을 기준으로 구분되어 주어진다. 각

www.acmicpc.net

 

코드

#include <iostream>
#include <vector>
#define ll long long int
using namespace std;

ll N,K,ans;
vector<char>v;

void find(vector<char>v, string now){
    if(!now.empty()){
        if(stoll(now)<=N) ans = max(ans, stoll(now));
        else return;
    }
    
    for(int i=0; i<K; i++){
        now+=v[i];
        find(v, now);
        now.pop_back();
    }
}

int main(){
    ios_base::sync_with_stdio(false);
    cin.tie(0);
    
    cin>>N>>K;
    
    for(int i=0; i<K; i++){
        char inp; cin>>inp;
        v.push_back(inp);
    }
    find(v, "");
    cout<<ans;
}

 

풀이

브루트포스 문제였습니다. 직접 모든 경우의 수를 다 찾아서 최댓값을 찾아 주었습니다.