문제 출처 : https://www.acmicpc.net/problem/2309

<C++code> standard code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#include<iostream>
#include<algorithm>
using namespace std;
int d[9];
int sum;
int main(void)
{
    for(int i=0;i<9;i++)
    {
        cin>>d[i];
        sum+=d[i];
    }
    sort(d,d+9);
    for(int i=0;i<8;i++)
    {
        for(int j=i+1;j<9;j++)
        {
            if(sum-d[i]-d[j]==100)
            {
                for(int t=0;t<9;t++)
                {
                    if(t==i||t==j) continue;
                    cout<<d[t]<<endl;
                }
                return 0;
            }
        }
    }
    return 0;
    
}
cs

<C++code> -->vector use

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
#include<iostream>
#include<vector>
#include<algorithm>
#define endl '\n'
using namespace std;
 
vector<int> a(9);
bool v[10];
vector<int> w;
void dfs(int cnt)
{
    if(cnt==7)
    {
        int sum=0;
        for(int i=0;i<w.size();i++)
        {
        
            sum+=w[i];
                
        }
        if(sum==100)
        {
            sort(w.begin(),w.end());
            
            for(int i=0;i<w.size();i++)
            {
                cout<<w[i]<<endl;
            }
            exit(0);
            
            }
            return ;
            
    }
    for(int i=0;i<a.size();i++)
    {
        if(!v[i])
        {
            v[i]=true;
            w.push_back(a[i]);
            dfs(cnt+1);
            v[i]=false;
            w.pop_back();
            
        }
    }
}
int main(void)
{
    
    for(int i=0;i<a.size();i++)
    {
        cin>>a[i];
        
    }
    //cout<<endl;
    dfs(0);
    
    return 0;
    
}
cs

<C++code> --> array use

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
#include<iostream>
#include<algorithm>
using namespace std;
int d[9];
bool v[9];
int ans[9];
void dfs(int cnt)
{
    if(cnt==7)
    {
        int sum=0;
        for(int i=0;i<7;i++)
        {
            sum+=d[ans[i]];
        }
        if(sum==100)
        {
            for(int i=0;i<7;i++)
            {
            
            cout<<d[ans[i]]<<endl;
        
            }
                exit(0);
        
        }
        return ;
    }
    for(int i=0;i<9;i++)
    {
        if(!v[i])
        {
            v[i]=true;
            ans[cnt]=i;
            dfs(cnt+1);
            v[i]=false;
        }
    }
}
int main(void)
{
    for(int i=0;i<9;i++)
    {
        cin>>d[i];    
    }
    sort(d,d+9);
    dfs(0);
    
    
    return 0;
    
}
cs

<C++ code>

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
int d[9];
int ans[9];
int sum=0;
bool v[9];
void dfs(int cnt,int sum)
{
    if(cnt==7)
    {
        if(sum!=100return ;
        
        if(sum==100)
        {
            for(int i=0;i<7;i++)
            {
                cout<<d[ans[i]]<<endl;
                
            }
            exit(0);
        }
    
    }
    
    for(int i=0;i<9;i++)
    {
        if(!v[i])
        {
            v[i]=true;
            ans[cnt]=i;
            sum+=d[i];
            dfs(cnt+1,sum);
            v[i]=false;
            sum-=d[i];
            
        }
    }
}
int main(void){
    for(int i=0;i<9;i++)
    {
        cin>>d[i];
    }
    sort(d,d+9);
    
    dfs(0,0);
    
    
    return 0;
    
}
cs

 

<C++code>--> 백준 스타일

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
#include<iostream>
#include<algorithm>
using namespace std;
int d[9];
int ans[9];
 
 
void dfs(int index,int start,int sum)
{
    if(start==7)
    {
        if(sum==100)
        {
            for(int i=0;i<7;i++)
            {
                cout<<d[ans[i]]<<' ';
            }
            cout<<endl;
            exit(0);
        }
        return ;
        
    }
 
    if(index>9return ;
    ans[start]=index;
    dfs(index+1,start+1,sum+d[index]);
    ans[start]=0;
    dfs(index+1,start,sum);
    
}
int main(void)
{
    for(int i=0;i<9;i++)
    {
        cin>>d[i];
        
    }
    sort(d,d+9);
    dfs(0,0,0);
    
    return 0;
    
}
cs

<C++code> -->순열 사용

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
#include<iostream>
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
int d[9];
int main(void)
{
    vector<int> a;
    for(int i=0;i<9;i++)
    {
        cin>>d[i];    
    }
    for(int i=0;i<7;i++)
    {
        a.push_back(1);
    }
    for(int i=7;i<9;i++)
    {
        a.push_back(0);
    }
    sort(d,d+9);
    do
    {
        int sum=0;
        for(int i=0;i<a.size();i++)
        {
            if(a[i]==1)
            {
                sum+=d[i];
            }
        }
        if(sum==100)
        {
            for(int i=0;i<a.size();i++)
            {
                if(a[i]==1)
                {
                    cout<<d[i]<<endl;
                }
            }
            return 0;
        }
        
    }while(prev_permutation(a.begin(),a.end()));
    
    
    return 0;
    
}
cs

<C++code> 비트마스크 사용

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
#include<iostream>
#include<bitset>
#include<algorithm>
#include<vector>
using namespace std;
int d[9];
int main(void)
{
    vector<int> a;
    int n=9;
    for(int i=0;i<9;i++)
    {
        cin>>d[i];
    }
    sort(d,d+9);
    for(int i=0;i<(1<<n);i++)
    {
        a.clear();
        for(int j=0;j<9;j++)
        {
            if(i&1<<j){
                a.push_back(d[j]);
            }
        }
        if(a.size()!=7continue;
        int sum=0;
        for(int i=0;i<a.size();i++)
        {
            sum+=a[i];
        }
        if(sum!=100continue;
        for(int i=0;i<a.size();i++)
        {
            cout<<a[i]<<endl;
        }
        cout<<endl;
        
    }
    return 0;
    
}
cs

'백준 온라인 저지 > 브루트 포스2' 카테고리의 다른 글

6064번_카잉 달력  (0) 2020.01.05
1107번_리모컨  (0) 2020.01.05
3085번_사탕 게임  (0) 2020.01.05

+ Recent posts