문제 출처 : 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!=100) return ;
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>9) return ;
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()!=7) continue;
int sum=0;
for(int i=0;i<a.size();i++)
{
sum+=a[i];
}
if(sum!=100) continue;
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 |