๐ก ์กฐ๊ฑด ๋ฐ ํ์ด
- ์
๋ ฅ ๋ฐ๋ ์ ๊ธธ์ด๋
1 <= s <= 1000
, ์๋ฌธ์๋ก๋ง ์ด๋ฃจ์ด์ ธ ์๋ค.
- ๋ฌธ์์ด์ 1๊ฐ ๋จ์๋ก ์๋ฅด๋ ๊ฒ๋ถํฐ s์ ๊ธธ์ด ๋งํผ ์๋ฅด๋ ๊ฒ๊น์ง ๊ณ์ฐ
- ์์ ํ์, ๊ตฌํ ๋ฌธ์
- ๋ฌธ์์ด์ ์๋ฅด๊ณ ์ซ์๋ฅผ ๋ถ์ด๋ ๊ฒ์์ ์ธ๋ฐ ์๋ ๋ฌธ์๊ฐ ๋ค์ด๊ฐ์ง ์๋๋ก ์ฃผ์
๐ฅ ์์ค ์ฝ๋
def solution(s):
k = len(s)
answer = k
for idx in range(1, k + 1):
std = ''
checker = s[0: idx]
std += checker
start, end = 0, idx
cnt = 1
for i in range(idx, k + 1, idx):
if i == k:
if cnt <= 1:
break
else:
std += str(cnt)
break
if checker == s[start + i:end + i]:
cnt += 1
elif cnt <= 1:
std += s[start + i:end + i]
checker = s[start + i:end + i]
continue
else:
std += str(cnt)
cnt = 1
std += s[start + i:end + i]
checker = s[start + i:end + i]
answer = min(answer, len(std))
return answer
๐ ์์ ๋ฐ ์คํ๊ฒฐ๊ณผ
์์
print(solution("aabbaccc"))
print(solution("ababcdcdababcdcd"))
print(solution("abcabcdede"))
print(solution("abcabcabcabcdededededede"))
print(solution("xababcdcdababcdcd"))
์คํ๊ฒฐ๊ณผ
7
9
8
14
17
โจ๏ธ ๋ฌธ์ ํ์ด
answer
์ ๊ฐ์ s
์ ๊ธธ์ด๋ก ์ด๊ธฐํ.
s
์ ๊ธธ์ด๋งํผ ์๋ฅธ๊ฒ์ด ๊ฐ์ฅ ์งง์ ์ ์๊ธฐ ๋๋ฌธ์ s์ ๊ธธ์ด๋ก ์ด๊ธฐํํ๋ค.
1๊ฐ๋ถํฐ s์ ๊ธธ์ด
๋งํผ ์๋ผ์ฃผ๋ฉด์ ์งํ์ ํ ๊ฒ์ด๊ธฐ ๋๋ฌธ์ 1๋ถํฐ s+1
๊น์ง ๋ฐ๋ณต๋ฌธ์ ์งํ
- ์๋ฅธ ๋ฌธ์์ด์ ์ด๋ฏธ 1๊ฐ๋งํผ ์๋๊ธฐ ๋๋ฌธ์
cnt = 1
๋ก ์ด๊ธฐํ
- ์๋ฅธ ๋ฌธ์์ด๊ณผ ๊ฐ์ ๋ฌธ์์ด์ด ์งํํ๋ฉด์ ์์ ๊ฒฝ์ฐ,
cnt += 1
- ์๋ฅธ ๋ฌธ์์ด๊ณผ ๋ค๋ฅธ ๋ฌธ์์ด์ด ๋ฐ๊ฒฌ๋์์ ๊ฒฝ์ฐ, ๊ฒ์ฌํ ๋ฌธ์๋ฅผ ๊ต์ฒดํ๋ค
์ง๊ธ๊น์ง ๊ฒ์ฌํด์ฃผ๋ ๋จ์ด์ ๋๋ ค์จ cnt๋ฅผ std์ ๋ฃ์ด์ฃผ๊ณ ๋ค์ ๊ฒ์ฌ ์งํ.
- ๊ฒ์ฌ๊ฐ ๋๋ ๋ค,
std
์ ๊ธธ์ด๊ฐ ๊ธฐ์กด์ answer
๋ณด๋ค ์๋ค๋ฉด ๊ฐฑ์ .
๐พ ๋๋์
- ๋๋ ๊ตฌํ์ด ๋งค์ฐ ์ฝํ๊ธฐ ๋๋ฌธ์ ์ฐ์ตํ๊ธฐ ๊ต์ฅํ ์ข์ ๋ฌธ์ ์๋ ๊ฒ ๊ฐ๋ค.