8000 Update 1497.cpp · dkim-coder/basic-algo-lecture@8655394 · GitHub
[go: up one dir, main page]

Skip to content

Commit 8655394

Browse files
Update 1497.cpp
1 parent 51ae761 commit 8655394

File tree

1 file changed

+40
-3
lines changed

1 file changed

+40
-3
lines changed

Appendix C/solutions/1497.cpp

Original file line numberDiff line numberDiff line change
@@ -1,11 +1,48 @@
11
// Authored by : BaaaaaaaaaaarkingDog
22
// Co-authored by : -
3-
// http://boj.kr/****************
3+
// http://boj.kr/2532d97629b04d7c86f15db6bee08772
44
#include <bits/stdc++.h>
55
using namespace std;
66

7-
int main(void){
7+
int n, m;
8+
long long state[10];
9+
10+
int bit_cnt(long long x){
11+
int ret = 0;
12+
for(int i = 0; i < m; i++){
13+
ret += (x >> i) & 1;
14+
}
15+
return ret;
16+
}
17+
18+
int main(){
819
ios::sync_with_stdio(0);
920
cin.tie(0);
1021

11-
}
22+
cin >> n >> m;
23+
for(int i = 0; i < n; i++){
24+
string name, tmp; // name은 사실 의미없음
25+
cin >> name >> tmp;
26+
for(int j = m-1; j >= 0; j--){
27+
state[i] = (state[i] << 1) | (tmp[j] == 'Y');
28+
}
29+
}
30+
31+
pair<int, int> ans = {0, -1}; // {연주할 수 있는 곡의 수, 필요한 기타의 수}
32+
for(int tmp = 0; tmp < (1 << n); tmp++){
33+
long long comb = 0; // 조합한 결과
34+
for(int i = 0; i < m; i++){
35+
if((tmp & (1LL << i)) == 0)
36+
continue;
37+
comb |= state[i];
38+
}
39+
int song_num = bit_cnt(comb);
40+
int guitar_num = bit_cnt(tmp);
41+
if(ans.first < song_num) // 1. 연주할 수 있는 곡의 수가 더 많을 경우
42+
ans = {song_num, guitar_num};
43+
// 2. 연주할 수 있는 곡의 수는 같은데 필요한 기타의 수가 더 적을 경우
44+
else if(ans.first == song_num && ans.second > guitar_num)
45+
ans = {song_num, guitar_num};
46+
}
47+
cout << ans.second << '\n';
48+
}

0 commit comments

Comments
 (0)
0