배웠음
을 체크해둔다.<시간초과 해결>
배우는 순서는 중요하지 않기 때문에 이전에 배운 단어를 다시 볼 필요는 없다.
따라서, 현재 알파벳이후 부터 검사를 시작하도록 한다.
import sys
n, k = map(int, input().split())
arr = [sys.stdin.readline().rstrip()[4:-4] for _ in range(n)]
alpha = [False] * 26
if k < 5:
print(0)
exit(0)
else:
k -= 5
al = ['a', 'n', 't', 'i', 'c']
for a in al:
alpha[ord(a)-ord('a')] = True
mx = -1
def solve(start, index):
global mx
if index==k:
count = 0
for ar in arr:
flag = True
for a in ar:
if not alpha[ord(a)-ord('a')]:
flag = False
break
if flag:
count += 1
mx = max(mx, count)
return
else:
for i in range(start, 26):
if not alpha[i]:
alpha[i] = True
solve(i, index+1)
alpha[i] = False
return
solve(0, 0)
print(mx)
dirmathfl 블로그