1. ๋ฌธ์ ์ค๋ช
- ์
๋ ฅ :
- s "aabbaccc" : ๋ฌธ์์ด
- ์ถ๋ ฅ :
- result 7
- ๋ช ๊ฐ ๋จ์๋ก ์๋ผ์ ์์ถํ์ ๋ ๊ฐ์ฅ ์งง์ ๊ธธ์ด๋ก ์์ถ์ด ๊ฐ๋ฅํ์ง ์ถ๋ ฅ
2. ์ฝ๋
solution1.py
def solution(s):
answer = len(s)
for i in range(1,int(len(s))+1): #๋ช๊ฐ์ฉ ์๋ฅผ์ง
pos = 0 #ํ์ฌ์์น
#๋จ์ ์ค์
length = len(s)
while pos + i <=len(s):
unit = s[pos:pos+i]
pos+=i #i๋งํผ ์ฆ๊ฐ์ํค๊ธฐ
#๋จ์๊ฐ ๋ช๋ฒ ๋ฑ์ฅํ๋์ง ์ฐพ๊ธฐ
count =0
while pos + i <= len(s):
if s[pos:pos+i] == unit:
count+=1
pos +=i
else:
break
if count>0:
#๊ฐ์ํ ๋ฌธ์์ด ๊ธธ์ด
length -=i*count
#์ฆ๊ฐํ ์ซ์๊ธธ์ด (๋ฑ์ฅํ์)
if count<9:
length+=1
elif count < 99:
length+=2
elif count < 999:
length+=3
else: #s์ ๊ธธ์ด๊ฐ 1000์ผ ๊ฒฝ์ฐ
length+=4
answer = min(answer, length)
return answer
3. ํ๊ณ
- ๋ฌธ์์ด์ ๊ฑด๋๋ฐ์ด๊ฐ๋ฉฐ ์๋ฅด๋ ๊ฒ์ ์ฌ๋ผ์ด์ฑ๋ง์ผ๋ก ํด๋ณด๋ คํ์๋๋ฐ ์ ๋์ ๊ฒฐ๊ตญ ํ์ฌ์์น(pos)๋ฅผ ์ค์ ํ๋ ๋ฐฉ๋ฒ์ ์ ํํ๋ค.
- ๊ทธ๋์ ๋งค๋ฒ pos+i ํด์ค์ ์ธ๋ฑ์ค ์์น๋ฅผ ๋ณ๊ฒฝํด์ค์ผํ๋ค.
- while ๋ฌธ์ ์ฌ์ฉํ๋ค. unit์ ์ค์ ํ ๋์ unit์ด ๋ช๋ฒ ๋ฑ์ฅํ๋์ง ์ฐพ๋ ๊ณผ์ ์ด๋ ๊ฒ ๋ ๊ฐ์ while๋ฌธ์ด ์๋๋ฐ, ๋ชจ๋ pos+i์ด s์ ๊ธธ์ด๋ณด๋ค ์ปค์ง๋ฉด ์ข ๋ฃํ๋ค.(์๊ฑฐ๋ ๊ฐ์๋์ ๋์)
- length๋ ์๋ ๊ธธ์ด์์๋ถํฐ ๋ฐ๋ณต๋๋ unit์ ๊ฐฏ์๊ฐ ์ฆ๊ฐํ๋ฉด icnt(๋ช๊ฐ๋จ์์ธ์ง๋ช๋ฒ๋ฑ์ฅํ๋์ง) ๋งํผ ๋ฌธ์์ด์ ๊ฐ์์ํจ๋ค.
- ๋ฑ์ฅํ์๊ฐ ํ ์๋ฆฌ์์ด๋ฉด ์ซ์๊ฐ ํ๋๋๊น +1, ๋ ์๋ฆฌ์์ด๋ฉด +2 ๋ฅผ ํด์ค์ผํ๋ค.
- s์ ์ต๋ ๊ธธ์ด๊ฐ 1000๊ฐ์ด๋ค, ๋ง์ฝ a 1000๊ฐ๋ก s๊ฐ ์ด๋ฃจ์ด์ ธ์๋ค๋ฉด ->1000a๋ก ์์ถํ๋ค.
- ๋ฐ๋ผ์ ๋ค์๋ฆฌ์ ์ผ ๊ฒฝ์ฐ +4, ๊ทธ ์ด์์ ๋ฑ์ฅํ ์ ์๋ค.
- ๋จ์๋ณ๋ก ๊ธธ์ด ํ์ ๋ ํ์๋ ๋ ์์ ๊ธธ์ด๋ฅผ ์ฐพ์๋ด๋ ๊ฒ์ด ๋ชฉํ์ด๋ฏ๋ก, ์๋ s์ ๊ธธ์ด์ ๋น๊ต๋ฅผ ํ ํ, ์์ ๊ฒ์ ์ ํํ๋ค.
- ๋ฐ๋ณต๋ฌธ์ด ์ฌ๋ฌ๊ฐ์ด๋ค๋ณด๋, pos, length, count, if count>0:, answer = min(answer, length) ๋ฑ์ ์ด๋ ๋์์ผ ํ ์ง ํท๊ฐ๋ ธ๋ ์ ์ด ๊ฐ์ฅ ์ด๋ ค์ ๋ค.
- ์ฃผ์์ฒ๋ฆฌ๋ฅผ ํตํด ํท๊ฐ๋ฆฌ์ง ์๋๋ก ํ์ํ๊ณ ๋ฐ๋ณตํด์ ๋ฌธ์ ๋ฅผ ํธ๋๊ฒ ์ข์ ๊ฒ ๊ฐ๋ค.
4. ์ฐธ๊ณ ์ฝ๋
'Algorithm > ํ๋ก๊ทธ๋๋จธ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ํ๋ก๊ทธ๋๋จธ์ค] [1์ฐจ] ๋คํธ ๊ฒ์ (Python) (0) | 2022.01.06 |
---|---|
[ํ๋ก๊ทธ๋๋จธ์ค] ๊ดํธ ๋ณํ (Python) (0) | 2022.01.06 |
[ํ๋ก๊ทธ๋๋จธ์ค] ํคํจ๋ ๋๋ฅด๊ธฐ (Python) (0) | 2022.01.03 |
[ํ๋ก๊ทธ๋๋จธ์ค] ์คํจ์จ (Python) (0) | 2022.01.02 |
[ํ๋ก๊ทธ๋๋จธ์ค] [1์ฐจ] ๋น๋ฐ์ง๋ (Python) (0) | 2022.01.02 |