๋ฐ์ํ
๋ฌธ์ ๋งํฌ
๋์ ํ์ด
- ๊ฑธ๋ฆฐ์๊ฐ : 1์๊ฐ
- ์ฃผ์ด์ง ๋ฌธ์์ด s์ ์ ๋ฐ๊ธธ์ด๋งํผ ์์ถ์ํฌ ์ ์์ผ๋ฏ๋ก len(s)//2 ๊น์ง๋ง ๋ฐ๋ณต๋ฌธ์ ๋๋ฆผ
- ์์์ ๋ถํฐ num ๋งํผ ์ง๋ฅธ ๋จ์ด๋ฅผ now๋ก ๋๊ณ , now๋ฅผ ๊ธฐ์ค์ผ๋ก ๋น๊ต๋ฅผ ์ค์
- now ๋ค์ ๊ธธ์ด num๋งํผ ์ง๋ฅธ ๋จ์ด๋ฅผ nex๋ผ๊ณ ์ง์
- now์ nex๋ฅผ ๋น๊ตํ๋ฉด์ result์ ์ฐ๊ฒฐ์์ผ์ค
- 2๋ฒ ์ด์ ๋ฑ์ฅํ ๋๋ง ์ซ์๋ฅผ ์ ์ด์ฃผ๋ฏ๋ก if๋ฌธ์ ํ์ฉํด์ count ๊ฐ์ 2์ด์์ธ์ง ํ์ธํ๊ณ , ์๋๊ฒฝ์ฐ ๊ทธ๋ฅ ๋ฌธ์์ด์ ๋ถ์ฌ์ฃผ๋ ๋ฐฉ์์ผ๋ก ์งํํ๋ค.
def solution(s):
answer = len(s)
for num in range(1, len(s)//2+1):
result = ''
count =1
# ์ง๊ธ ๋น๊ตํ now
now = s[:num]
for i in range(num, len(s), num):
# now ๋ค์์๋ ๋ฌธ์์ด nex
nex = s[i:i+num]
if now == nex:
count+=1
else:
if count >= 2: # 2์ด์์ด์ด์ผ ์ซ์ ์ ์, 1์ ์๋ต
result += str(count) + now
else:
result += now
now = nex #now๋ฅผ nex๋ก ๋ฐ๊ฟ์ฃผ๋ ๊ณผ์
count = 1
# ๋ค๋์๊ฐ๊ณ ๋๋จธ์ง
if count >= 2:
result += str(count) + now
else:
result += now
answer = min(answer, len(result))
result = '' #์ด๊ธฐํ
return answer
๋ค๋ฅธ์ฌ๋ ํ์ด
๋ฌธ์ ๋ฅผ ํ๋ฉด์ ์กฐ๊ธ ํค๋งค๊ธฐ๋ ํ๊ณ , ์๊ฐ์ด ์กฐ๊ธ ์ค๋ ๊ฑธ๋ ธ๋ค. ๋ฌธ์์ด์ ๋ค๋ฃจ๋ ๋ฐฉ๋ฒ๊ณผ for๋ฌธ์ ๋ค ๋์๊ฐ๊ณ ๋ง์ง๋ง์ ๋ฃ์ด์ฃผ๋ ๊ณผ์ ์์ ์กฐ๊ธ ํท๊ฐ๋ฆฌ๋ ๋ถ๋ถ์ด ๋ง์๋ค. ๋ค๋ฅธ์ฌ๋ํ์ด์ ํ๋ฅญํ ํ์ด๊ฐ ์์ผ๋ ์ข์์ ์์ผ๋ก 2๊ฐ ์ ๋ ์ ๋ ํ๊ณ ๋์ด๊ฐ๋ณด์.
๋ฐ์ํ
'Algorithm > Programmers' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ํ๋ก๊ทธ๋๋จธ์ค] ์์ ๋ํ๊ธฐ (level.1) (0) | 2021.09.02 |
---|---|
[ํ๋ก๊ทธ๋๋จธ์ค] ์ซ์ ๋ฌธ์์ด๊ณผ ์๋จ์ด (0) | 2021.09.01 |
[ํ๋ก๊ทธ๋๋จธ์ค] ๋ก๋์ ์ต๊ณ ์์์ ์ต์ ์์ (level 1) (0) | 2021.08.18 |
[ํ๋ก๊ทธ๋๋จธ์ค] ํฐ์ผ๋ชฌ (level 1) (0) | 2021.08.18 |
[ํ๋ก๊ทธ๋๋จธ์ค] ํ์๋ฒ(greedy) - ์ฒด์ก๋ณต (0) | 2021.08.06 |