https://school.programmers.co.kr/learn/courses/30/lessons/60057
๋ฌธ์ ์์ ๋ฌธ์์ด์ ์ ์ผ ์๋ถํฐ ์ ํด์ง ๊ธธ์ด๋งํผ ์๋ผ์ผ ํฉ๋๋ค.๋ผ๋ ์กฐ๊ฑด ๋๋ถ์ ์ฝ๊ฒ ํด๊ฒฐํ ์ ์์๋ค.
์์ด๋์ด
1. ๋ฌธ์์ด ์ผ์ ๋จ์๋ก ์๋ฅด๊ธฐ
- ํ์ด์ฌ์ ์๋ ๋ฆฌ์คํธ ์ฌ๋ผ์ด์ฑ์ ํ์ฉํ๋ฉด ์ฝ๊ฒ ํด๊ฒฐ ๊ฐ๋ฅ.
- ์๋ฅด๋ ๋จ์๋ฅผ ๋ฌธ์์ด ๊ธธ์ด์ ์ ๋ฐ ์ด์์ด ๋๋ฉด ๋ฐ๋ณต๋๋ ๊ฒ์ด ๋ถ๊ฐ๋ฅํ๋ค. ๋ฐ๋ผ์ ์๋ฅด๋ ๋จ์๋ ์ฃผ์ด์ง ๋ฌธ์์ด ๊ธธ์ด์ ์ ๋ฐ๊น์ง ์ค์ ํ๋ค.
2. ์๋ฅธ ๋จ์์ ๋ง์ถฐ ๋ฌธ์์ด ์์ถ
- for๋ฌธ์ ํ์ฉํ์ฌ ๋ฐ๋ณต๋๋ ๋ถ๋ถ์ด ์๋์ง ํ์ธํ๋ค.
์ ์ฒด ์ฝ๋
def solution(s):
answer = len(s)
for i in range(1, len(s) // 2 + 1):
s_list = []
for j in range(len(s) // i + 1):
if s[i * j: i * (j + 1)] != '':
s_list.append(s[i * j: i * (j + 1)])
temp = s_list[0] # ๋ฐ๋ณต๋๋์ง ํ์ธํ ๋ฌธ์
temp_str = "" # ๊ธธ์ด ์ธก์ ์ ์ํ ์์ถ๋ ๋ฌธ์์ด
count = 1# ๋ฌธ์๊ฐ ๋ฐ๋ณตํ๋ ํ์
for k in range(1, len(s_list)):
if temp == s_list[k]:
count += 1
else:
if count > 1:
temp_str += str(count)
temp_str += temp
temp = s_list[k]
count = 1
if count > 1:
temp_str += str(count)
temp_str += temp
answer = min(answer, len(temp_str))
return answer
์ฝ๋ ์ค๋ช
answer = len(s)
for i in range(1, len(s) // 2 + 1):
๋จผ์ ์ด๋ป๊ฒ ๋ฌธ์์ด์ ์๋ผ๋ ์์ถ๋์ง ์๋ ๊ฒฝ์ฐ๊ฐ ์์ผ๋ฏ๋ก answer์ ์ ๋ ฅ๋ฐ์ ๋ฌธ์์ด์ ๊ธธ์ด๋ฅผ ์ ์ฅํ๋ค.
์ดํ ๋ฌธ์์ด์ 1๊ฐ๋ถํฐ ๋ฌธ์์ด์ ์ ๋ฐ ๊ธธ์ด(len(s) // 2)๊น์ง ์ ๋จ์๊น์ง ๋ฌธ์์ด์ ์์ถํด๋ณด๋ฉด ๋๋ค.
s_list = []
for j in range(len(s) // i + 1):
if s[i * j: i * (j + 1)] != '':
s_list.append(s[i * j: i * (j + 1)])
๋ฌธ์์ด์ ์์ถํ๊ธฐ ์ ์ ์ฃผ์ด์ง ๋จ์(i)๋ก ๋ฌธ์์ด์ slicing ํด์ค๋ค.
๋จผ์ slicing ๋ ๋ฌธ์์ด์ ์ ์ฅํ๊ธฐ ์ํด s_list๋ฅผ ์ ์ธํด์ฃผ๊ณ , ์๋ฅธ ๋ฌธ์์ด์ s_list์ ์ฐจ๋ก๋๋ก ์ถ๊ฐํด์ค๋ค.
temp = s_list[0] # ๋ฐ๋ณต๋๋์ง ํ์ธํ ๋ฌธ์
temp_str = "" # ๊ธธ์ด ์ธก์ ์ ์ํ ์์ถ๋ ๋ฌธ์์ด
count = 1# ๋ฌธ์๊ฐ ๋ฐ๋ณตํ๋ ํ์
for k in range(1, len(s_list)):
if temp == s_list[k]:
count += 1
else:
if count > 1:
temp_str += str(count)
temp_str += temp
temp = s_list[k]
count = 1
if count > 1:
temp_str += str(count)
temp_str += temp
answer = min(answer, len(temp_str))
์ด์ ๋ฌธ์ ์์ ์ฃผ์ด์ง ์กฐ๊ฑด์ ๋ฐ๋ผ ๋ฌธ์์ด์ ์์ถํด ํํํ๋ฉด ๋๋ค.
๋น๊ตํ ๋จ์ ๋ฌธ์์ด์ temp์ ์ ์ฅํ๊ณ s_list์ ์๋ ์์๋ค๊ณผ ๋น๊ตํด๋ณด๋ฉด ๋๋ค.
๊ฐ์ ๋ฌธ์๊ฐ ๋์ค๋ฉด ๋ฐ๋ณต๋ ํ์(count)๋ฅผ ์ฆ๊ฐ์์ผ์ฃผ๊ณ
๋ค๋ฅธ ๋ฌธ์๊ฐ ๋์ค๋ฉด ์์๋ก ๋ง๋ ์์ถ ๋ฌธ์์ด(temp_str)์ count๋ temp๋ฅผ ๋ถ์ฌ์ฃผ๋ฉด ๋๋ค.
count๊ฐ 1์ธ ๊ฒฝ์ฐ(=๋ฐ๋ณต๋ ๋ฌธ์๊ฐ ์๋ ๊ฒฝ์ฐ) 1์ ์๋ตํ๋ค๊ณ ํ์ผ๋ฏ๋ก if๋ฌธ์ ์ฌ์ฉํด ์ฒ๋ฆฌํด์ค๋ค.
์ฃผ์ด์ง ๋ฌธ์์ด(s)์ ๋ง์ง๋ง ๋ฌธ์๋ ๋ถ์ฌ์ค์ผ ํ๋ฏ๋ก for๋ฌธ์ด ๋๋ ์ดํ, ๋จ์ ๋ฌธ์(temp)๋ count์ ํจ๊ป ๋ถ์ฌ์ค๋ค.
์์ถ์ด ๋ค ๋๋๋ฉด ๊ธฐ์กด์ ์๋ ๊ฐ๊ณผ ๋น๊ตํด ์์ ๊ฐ์ answer์ ์ ์ฅํด์ค๋ค.