๋ฐ์ํ
๋ฌธ์
ํ์ด
์ ๋ ฅ์ผ๋ก ์ฃผ์ด์ง๋ ๋ฌธ์๊ฐ 1000 ์ดํ์ด๊ธฐ ๋๋ฌธ์ ์์ ํ์์ ์ํํ ์ ์๋ค. ๊ธธ์ด๊ฐ N์ธ ๋ฌธ์์ด์ด ์ ๋ ฅ๋๋ฉด 1๋ถํฐ N/2 ๊น์ง์ ๋ชจ๋ ์๋ฅผ ๋จ์๋ก ํ์ฌ ๋ฌธ์์ด์ ์์ถํ๋ ๋ชจ๋ ๋ฐฉ๋ฒ์ ํ์ธํ๊ณ , ๊ฐ์ฅ ์งง๊ฒ ์์ถ๋๋ ๊ธธ์ด๋ฅผ ์ถ๋ ฅํ๋ฉด ๋๋ค. ๊ตฌ์ฒด์ ์ธ ๋ฐฉ๋ฒ์ step ์ฌ์ด์ฆ๋ก ๋ฌธ์์ด์ ์๋ผ์ prev์ ์ ์ฅํด๋๊ณ , ๋ค์ ์์น๋ฅผ step ์ฌ์ด์ฆ๋ก ์๋ฅด๊ณ prev์ ๋๊ฐ์์ง ๋น๊ตํ๋ฉด์ ์งํํ๋ค.
def solution(s):
answer = len(s)
# step์ 1๋ถํฐ ๋ฌธ์์ด ๊ธธ์ด ๋ฐ๊น์ง ๋๋ ค๊ฐ๋ฉฐ ํ์ธ
for step in range(1, len(s)//2 +1):
compressed = ""
prev = s[0:step] # ์์์ ๋ถํฐ step ๋งํผ์ ๋ฌธ์์ด ์ถ์ถ
count = 1
# step ํฌ๊ธฐ ๋งํผ ์ฆ๊ฐ์ํค๋ฉฐ ์ด์ ๋ฌธ์์ด๊ณผ ๋น๊ต
for j in range(step, len(s), step):
if prev == s[j:j+step]:
count += 1
# ๋ค๋ฅธ ๋ฌธ์์ด์ด ๋์ค๋ฉด
else :
if count >= 2:
compressed += str(count) + prev
else :
compressed += prev
prev = s[j:j+step]
count = 1
# ๋ง์ง๋ง ๋จ์ ๋ฌธ์์ด ์ฒ๋ฆฌ
if count >= 2:
compressed += str(count) + prev
else :
compressed += prev
answer = min(answer, len(compressed))
return answer
๋ฐ์ํ
'๐ป Programming > ์๊ณ ๋ฆฌ์ฆ ํ ์คํธ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[python] ํ๋ก๊ทธ๋๋จธ์ค_์คํจ์จ (์ ๋ ฌ) (0) | 2022.02.15 |
---|---|
[python] ํ๋ก๊ทธ๋๋จธ์ค_ํ๋ฆฐํฐ (์คํํ) (0) | 2022.02.14 |
[python] ํ๋ก๊ทธ๋๋จธ์ค_์๋ฌผ์ ์ ์ด์ (์์ ํ์) (0) | 2022.02.14 |
[python] ํ๋ก๊ทธ๋๋จธ์ค_์นดํซ (์์ ํ์) (0) | 2022.02.14 |
[python] ํ๋ก๊ทธ๋๋จธ์ค_ํ๊ฒ๋๋ฒ (DFS&BFS) (0) | 2022.02.06 |