๋ฌธ์
์๋ ์ ์ด์ด ์๋ก์ด ๋ฌธ์์ด ๊ฒ์์ด ์๋ค. ๊ฒ์์ ์งํ ๋ฐฉ์์ ์๋์ ๊ฐ๋ค.
- ์ํ๋ฒณ ์๋ฌธ์๋ก ์ด๋ฃจ์ด์ง ๋ฌธ์์ด W๊ฐ ์ฃผ์ด์ง๋ค.
- ์์ ์ ์ K๊ฐ ์ฃผ์ด์ง๋ค.
- ์ด๋ค ๋ฌธ์๋ฅผ ์ ํํ K๊ฐ๋ฅผ ํฌํจํ๋ ๊ฐ์ฅ ์งง์ ์ฐ์ ๋ฌธ์์ด์ ๊ธธ์ด๋ฅผ ๊ตฌํ๋ค.
- ์ด๋ค ๋ฌธ์๋ฅผ ์ ํํ K๊ฐ๋ฅผ ํฌํจํ๊ณ , ๋ฌธ์์ด์ ์ฒซ ๋ฒ์งธ์ ๋ง์ง๋ง ๊ธ์๊ฐ ํด๋น ๋ฌธ์๋ก ๊ฐ์ ๊ฐ์ฅ ๊ธด ์ฐ์ ๋ฌธ์์ด์ ๊ธธ์ด๋ฅผ ๊ตฌํ๋ค.
์์ ๊ฐ์ ๋ฐฉ์์ผ๋ก ๊ฒ์์ Tํ ์งํํ๋ค.
์ ๋ ฅ
๋ฌธ์์ด ๊ฒ์์ ์ T๊ฐ ์ฃผ์ด์ง๋ค. (1 ≤ T ≤ 100)
๋ค์ ์ค๋ถํฐ 2๊ฐ์ ์ค ๋์ ๋ฌธ์์ด W์ ์ ์ K๊ฐ ์ฃผ์ด์ง๋ค. (1 ≤ K ≤ |W| ≤ 10,000)
์ถ๋ ฅ
T๊ฐ์ ์ค ๋์ ๋ฌธ์์ด ๊ฒ์์ 3๋ฒ๊ณผ 4๋ฒ์์ ๊ตฌํ ์ฐ์ ๋ฌธ์์ด์ ๊ธธ์ด๋ฅผ ๊ณต๋ฐฑ์ ์ฌ์ด์ ๋๊ณ ์ถ๋ ฅํ๋ค.
๋ง์ฝ ๋ง์กฑํ๋ ์ฐ์ ๋ฌธ์์ด์ด ์์ ์ -1์ ์ถ๋ ฅํ๋ค.
์์ ์ ๋ ฅ 1
2
superaquatornado
2
abcdefghijklmnopqrstuvwxyz
5
์์ ์ถ๋ ฅ 1
4 8
-1
์ฒซ ๋ฒ์งธ ๋ฌธ์์ด์์ 3๋ฒ์์ ๊ตฌํ ๋ฌธ์์ด์ aqua, 4๋ฒ์์ ๊ตฌํ ๋ฌธ์์ด์ raquator์ด๋ค.
๋ ๋ฒ์งธ ๋ฌธ์์ด์์๋ ์ด๋ค ๋ฌธ์๊ฐ 5๊ฐ ํฌํจ๋ ๋ฌธ์์ด์ ์ฐพ์ ์ ์์ผ๋ฏ๋ก -1์ ์ถ๋ ฅํ๋ค.
์์ ์ ๋ ฅ 2
1
abaaaba
3
์์ ์ถ๋ ฅ 2
3 4
๋์ ํ์ด
๋ก์ง
์ฌ์ค ๋ฌธ์ ๋ฅผ ํ๋ฒ๋ง์ ์ดํดํ์ง ๋ชปํ๋ค..ใ
์์ ๋ฅผ ๋ณด๋ ๋ฌธ์ ๋ฅผ ์ดํดํ ์ ์์๊ณ , ๋์ถฉ ์ด๋ป๊ฒ ํ์ด์ผํ๋์ง ๊ฐ์ด ์๋ค.
๋ฌธ์์ด์ ํฌํจ๋ ๋ฌธ์๋ฅผ “์ธ๋ฑ์คํ”ํ์ฌ ๋์ ๋๋ฆฌ์ ์ ์ฅํ๋ค๋ฉด ๊ฐ ๋ฌธ์๊ฐ ํฌํจ๋ ๋ฌธ์์ด์ ๊ธธ์ด๋ฅผ ํ์ ํ๊ธฐ๊ฐ ์ ๋ง ์ฌ์ธ ๊ฒ์ด๋ผ๊ณ ์ ๊ทผํ๋ค.
์ฐ์ superaquatornado๋ฅผ ์์๋ก ๋ค์ด์ ์ค๋ช ํด๋ณด์๋ฉด,
๊ฐ๊ฐ์ ๋ฌธ์๋ฅผ key๊ฐ์ผ๋ก ๊ฐ์ง๊ณ ๊ฐ ๋ฌธ์์ ์ธ๋ฑ์ค ๋ฒํธ๋ฅผ value๋ก ๋ฐฐ์ด๋ก ๊ฐ์ง๊ณ ์๋๋ก ํด๋ณด์.
s [0]
u [1, 7]
p [2]
e [3]
r [4, 11]
a [5, 8, 13]
q [6]
t [9]
o [10, 15]
n [12]
d [14]
์ด ์ค ๋ฌธ์๋ฅผ ์ ํํ k๊ฐ ํฌํจํ๋ ์ง๋ value์ ๊ธธ์ด๋ฅผ ํ์ ํ๋ฉด ๋๋ค.
์์์ k๋ 2๊ฐ์ด๋ฏ๋ก 2๊ฐ์ด์์ด ๋๋ value๋ง ๋ฝ์๋ณด์.
u [1, 7]
r [4, 11]
a [5, 8, 13]
o [10, 15]
์ฌ๊ธฐ์ ์ ํํ k๊ฐ๋ฅผ ํฌํจํ๋ ๋ฌธ์์ด์ ๊ธธ์ด๋ 2๊ฐ๋ฅผ ๊ฐ๊ฒฉ์ผ๋ก ๋๊ณ ๋ท ๋ฒํธ์์ ์ ๋ฒํธ๋ฅผ ๋นผ์ค ๋ค 1๋ฅผ ๋ํ๋ฉด ํด๋น ๋ฌธ์์ด์ ๊ธธ์ด๊ฐ ๋๋ค.
u [1, 7] -> 7
r [4, 11] -> 8
a [5, 8, 13] -> 4, 6
o [10, 15] -> 6
์ด๋ ๊ฒ 7, 8, 4, 6, 6 ์ด๋ผ๋ ์ด๋ค ๋ฌธ์๋ฅผ ์ ํํ k๊ฐ ํฌํจํ๋ ๋ฌธ์์ด์ ๊ธธ์ด๋ฅผ ๊ตฌํ ์ ์๋ค.
์ด ์ค ๊ฐ์ฅ ์์ ๊ธธ์ด์ ๊ฐ์ฅ ๊ธด ๊ธธ์ด๊ฐ ์ฐ๋ฆฌ๊ฐ ๊ตฌํ๊ณ ์ ํ๋ ๊ฒ์ด๋ค.
์ฝ๋
from collections import defaultdict
tc = int(input())
for _ in range(tc):
word = input()
k = int(input())
alphabet_dict = defaultdict()
for i, w in enumerate(word):
if alphabet_dict.get(w) == None :
alphabet_dict[w] = [i]
else:
alphabet_dict[w].append(i)
for (key, value) in alphabet_dict.items():
if len(value) >= k:
for i in range(0, len(value) - k + 1):
tmp.append(value[i + k - 1] - value[i] + 1)
if tmp == []:
print(-1)
else:
print(min(tmp), max(tmp))
์์ ์ฝ๋๋ฅผ ์ต์ ํํ๋ค๋ฉด
from collections import defaultdict
tc = int(input())
for _ in range(tc):
word = input()
k = int(input())
alphabet_dict = defaultdict(list)
for i, w in enumerate(word):
alphabet_dict[w].append(i)
min_length = float('inf')
max_length = -1
for indices in alphabet_dict.values():
if len(indices) >= k:
for i in range(len(indices) - k + 1):
length = indices[i + k - 1] - indices[i] + 1
min_length = min(min_length, length)
max_length = max(max_length, length)
if max_length == -1:
print(-1)
else:
print(min_length, max_length)
์ด๋ ๊ฒ ํ ์ ์๋ค.