๐ข ๊ฐ๋ฅด์นจ
1. ๋ฌธ์ ๋งํฌ
2. ์ฝ๋
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
62
63
64
65
66
67
68
69
70
71
"""
[1062] ๊ฐ๋ฅด์นจ
๐ ๋ฌธ์
๋จ๊ทน์ ์ฌ๋ ๊น์ง๋ฏผ ์ ์๋์ ํ์๋ค์ด ๋๋๋ก์ด๋ฉด ๋ง์ ๋จ์ด๋ฅผ ์ฝ์ ์ ์๋๋ก ํ๋ ค๊ณ ํ๋ค.
๊ทธ๋ฌ๋ ์ง๊ตฌ์จ๋ํ๋ก ์ธํด ์ผ์์ด ๋
น์์ ๊ณง ํ๊ต๊ฐ ๋ฌด๋์ง๊ธฐ ๋๋ฌธ์,
๊น์ง๋ฏผ์ K๊ฐ์ ๊ธ์๋ฅผ ๊ฐ๋ฅด์น ์๊ฐ ๋ฐ์ ์๋ค.
๊น์ง๋ฏผ์ด ๊ฐ๋ฅด์น๊ณ ๋ ํ์๋, ํ์๋ค์ ๊ทธ K๊ฐ์ ๊ธ์๋ก๋ง ์ด๋ฃจ์ด์ง ๋จ์ด๋ง์ ์ฝ์ ์ ์๋ค.
๊น์ง๋ฏผ์ ์ด๋ค K๊ฐ์ ๊ธ์๋ฅผ ๊ฐ๋ฅด์ณ์ผ ํ์๋ค์ด ์ฝ์ ์ ์๋ ๋จ์ด์ ๊ฐ์๊ฐ ์ต๋๊ฐ ๋๋์ง ๊ณ ๋ฏผ์ ๋น ์ก๋ค.
๋จ๊ทน์ธ์ด์ ๋ชจ๋ ๋จ์ด๋ "anta"๋ก ์์๋๊ณ , "tica"๋ก ๋๋๋ค.
๋จ๊ทน์ธ์ด์ ๋จ์ด๋ N๊ฐ ๋ฐ์ ์๋ค๊ณ ๊ฐ์ ํ๋ค. ํ์๋ค์ด ์ฝ์ ์ ์๋ ๋จ์ด์ ์ต๋๊ฐ์ ๊ตฌํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค.
๐ ์
๋ ฅ
์ฒซ์งธ ์ค์ ๋จ์ด์ ๊ฐ์ N๊ณผ K๊ฐ ์ฃผ์ด์ง๋ค.
N์ 50๋ณด๋ค ์๊ฑฐ๋ ๊ฐ์ ์์ฐ์์ด๊ณ , K๋ 26๋ณด๋ค ์๊ฑฐ๋ ๊ฐ์ ์์ฐ์ ๋๋ 0์ด๋ค.
๋์งธ ์ค๋ถํฐ N๊ฐ์ ์ค์ ๋จ๊ทน ์ธ์ด์ ๋จ์ด๊ฐ ์ฃผ์ด์ง๋ค.
๋จ์ด๋ ์์ด ์๋ฌธ์๋ก๋ง ์ด๋ฃจ์ด์ ธ ์๊ณ , ๊ธธ์ด๊ฐ 8๋ณด๋ค ํฌ๊ฑฐ๋ ๊ฐ๊ณ , 15๋ณด๋ค ์๊ฑฐ๋ ๊ฐ๋ค.
๋ชจ๋ ๋จ์ด๋ ์ค๋ณต๋์ง ์๋๋ค.
๐ ์ถ๋ ฅ
์ฒซ์งธ ์ค์ ๊น์ง๋ฏผ์ด K๊ฐ์ ๊ธ์๋ฅผ ๊ฐ๋ฅด์น ๋, ํ์๋ค์ด ์ฝ์ ์ ์๋ ๋จ์ด ๊ฐ์์ ์ต๋๊ฐ์ ์ถ๋ ฅํ๋ค.
"""
from itertools import combinations
# ๋จ์ด์ ๊ฐ์ n, k
n, k = map(int, input().split())
def check(s, cnt):
global result
if cnt == k - 5:
tmp = 0
for word in words:
already = 1
for c in word:
if not temp[ord(c) - ord('a')]:
already = 0
break
if already:
tmp += 1
result = max(result, tmp)
return
for i in range(s, 26):
if not temp[i]:
temp[i] = 1
check(i, cnt + 1)
temp[i] = 0
# ์ค๋ณต ์ ๊ฑฐ
for _ in range(n) :
words = set(input().rstrip())
temp = [0] * 26
result = 0
# ๊ฐ๋ฅด์น ๊ธ์์ ์๊ฐ 5(a, n, t, i, c)๋ณด๋ค ์์ ๊ฒฝ์ฐ
if k < 5:
print(0)
elif k == 26:
print(n)
for c in ('a', 'c', 'i', 'n', 't'):
temp[ord(c) - ord('a')] = 1
check(0, 0)
print(result)
This post is licensed under CC BY 4.0 by the author.