๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Algorithm ๐Ÿง‘๐Ÿป‍๐Ÿ’ป/๋ฐฑ์ค€(BOJ)

[๋ฐฑ์ค€,c++] 18511๋ฒˆ - ํฐ ์ˆ˜ ๊ตฌ์„ฑํ•˜๊ธฐ

by ์•ˆ์ฃผํ˜• 2022. 4. 3.

๋ฌธ์ œ

 

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;
}

 

ํ’€์ด

๋ธŒ๋ฃจํŠธํฌ์Šค ๋ฌธ์ œ์˜€์Šต๋‹ˆ๋‹ค. ์ง์ ‘ ๋ชจ๋“  ๊ฒฝ์šฐ์˜ ์ˆ˜๋ฅผ ๋‹ค ์ฐพ์•„์„œ ์ตœ๋Œ“๊ฐ’์„ ์ฐพ์•„ ์ฃผ์—ˆ์Šต๋‹ˆ๋‹ค.

๋Œ“๊ธ€