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

[๋ฐฑ์ค€,c++] 18429๋ฒˆ - ๊ทผ์†์‹ค

by dkswnkk 2022. 8. 23.

๋ฌธ์ œ

 

18429๋ฒˆ: ๊ทผ์†์‹ค

์›จ์ดํŠธ ํŠธ๋ ˆ์ด๋‹์„ ์ข‹์•„ํ•˜๋Š” ์–ด๋–ค ๋Œ€ํ•™์›์ƒ์€, ํ˜„์žฌ 3๋Œ€ ์šด๋™ ์ค‘๋Ÿ‰ 500์˜ ๊ดด๋ ฅ์„ ์†Œ์œ ํ•˜๊ณ  ์žˆ๋‹ค. ๋‹ค๋งŒ, ํ•˜๋ฃจ๊ฐ€ ์ง€๋‚  ๋•Œ๋งˆ๋‹ค ์ค‘๋Ÿ‰์ด K๋งŒํผ ๊ฐ์†Œํ•œ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด K=4์ผ ๋•Œ, 3์ผ์ด ์ง€๋‚˜๋ฉด ์ค‘๋Ÿ‰์ด 488๋กœ

www.acmicpc.net

 

์ฝ”๋“œ

#include <iostream>
#include <vector>

using namespace std;


int N, K, ans;
vector<int> v;

bool visited[9];

void dfs(int depth, int power){
    
    if(depth == N-1 && power>=500){
        ans++;
        return;
    }
    
    for(int i=0; i<N; i++){
        if(visited[i]) continue;
        visited[i] = 1;
        if(power - K + v[i] >=500) dfs(depth+1, power - K + v[i]);
        visited[i] = 0;
    }
    
}

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

 

ํ’€์ด

๋งŒ๋“ค์–ด์ง€๋Š” ์กฐํ•ฉ์˜ ๋ชจ๋“  ๊ฒฝ์šฐ๋ฅผ ํƒ์ƒ‰ํ•˜๋Š”๋ฐ, ์‚ฌ์ „์— ํ˜„์žฌ ์šด๋™ ํ‚คํŠธ๋ฅผ ์ ์šฉํ–ˆ์„๋•Œ ์šด๋™ ์ค‘๋Ÿ‰์ด 500๋ฏธ๋งŒ์ด ๋œ๋‹ค๋ฉด ํƒ์ƒ‰์„ ํ•˜์ง€ ์•Š๋Š” ๋ฐฉ์‹์œผ๋กœ ๊ตฌํ˜„ํ–ˆ์Šต๋‹ˆ๋‹ค.

๋Œ“๊ธ€