코드는 한방에 짰는데 1갯수 확인하는 코드에서 노래수만큼이 아니라 기타수만큼 반복문돌려서 7번 틀렸다..
import sys
input = sys.stdin.readline
from itertools import combinations
# 기타 플레이 리스트 이진수로 바꿔서 set에 저장.
N,M = map(int,input().split())
guitars = set()
for _ in range(N):
name,pos = input().split()
bin_change=''
for chr in pos:
if chr=="Y":
bin_change += '1'
else:
bin_change += '0'
guitars.add(int(bin_change,2))
# 셋에서 0 제거하고 비었으면 -1출력후 종료
guitars -={0}
if not guitars:
print(-1)
exit()
max_cnt=0
# 1개~N개까지 set에서 추출하는 조합 검사(N이 set길이 넘어가면 자동 종료.)
for i in range(1,N+1):
for combs in combinations(guitars,i):
# total에 각각 조합마다 이진수 연산.
total=0
for num in combs:
total |=num
# 연산한 total에서 Y몇개인지 확인.
cnt=0
for j in range(M):
if total&(1<<j):
cnt+=1
# max값 최신화 시켜주고 i기록.(i는 오름차순으로 검사하기때문에 기타수는 최소값으로 들어감.)
if max_cnt < cnt:
max_cnt=cnt
max_guitar=i
print(max_guitar)
'practivceAlgorithm > 백준' 카테고리의 다른 글
[백준][Python] 20002 사과나무 (0) | 2021.07.31 |
---|---|
[백준][Python] 1766 문제집 (0) | 2021.07.31 |
[백준][Python] 1102 발전소 (0) | 2021.07.31 |
[백준][Python] 14939 불끄기. (1) | 2021.07.31 |
[백준][Python] 1248 맞춰봐 (0) | 2021.07.30 |