[백준 문제] 1062번 가르침 (파이썬)
[백준 문제] 1062번 가르침 (파이썬)
[백준 문제] 1062번 가르침를 풀어본다.
의식의 흐름
- set을 이용하면 손쉽게 풀어질줄 알았으나, 시간초과의 늪에서 헤어나오지 못함
- 좀더 생각해봐야겠음
from itertools import combinations
import sys
N, K = map(int, sys.stdin.readline().split())
basic_set = {'a', 'c', 'i', 'n', 't'}
all_set = set()
word_lst = []
ans = 0
for _ in range(N):
word_set = set(sys.stdin.readline())
word_set = word_set - {'\n'}
diff_set = word_set - basic_set
word_lst.append(list(diff_set))
all_set = all_set.union(word_set)
diff_set = all_set - basic_set
diff_lst = list(diff_set)
diff_lst = sorted(diff_lst)
per = combinations(diff_lst, K - 5)
for spellin in per:
cnt = 0
spell_lst = list(spellin) # 알려줄 알파벳 리스트
for word_gp in word_lst: # [[r], [c,a,r]] 리스트에서
is_True = 1
for word in word_gp : # [c,a,r] -> c, 실제 단어
if word in spell_lst:
is_True *= 1
else:
is_True *= 0
if is_True == 1:
cnt += 1
ans = max(ans, cnt)
print(ans)