ํ๋ก๊ทธ๋๋จธ์ค
SW๊ฐ๋ฐ์๋ฅผ ์ํ ํ๊ฐ, ๊ต์ก์ Total Solution์ ์ ๊ณตํ๋ ๊ฐ๋ฐ์ ์ฑ์ฅ์ ์ํ ๋ฒ ์ด์ค์บ ํ
programmers.co.kr
์ต์ ํํ ํ์ด
๋ชจ๋ ์ ๋ณด๋ฅผ ์ ์ฅํ ํ์๊ฐ ์์ง ์์๋๊ฐ.. ๋ฐ๋ก ์ง์ ๊ฒ๋ง ํ์ธํ๋ฉด ๋์๋ ๊ฑด๋ฐ ์ ..
def compress(s, num):
cnt = 1
prev = s[:num]
compress = ""
# ์ด์ ๋ฌธ์์ ๋ํด์๋ง ๋ํจ
for i in range(num, len(s), num):
curr = s[i:i+num]
if curr == prev:
cnt += 1
else:
if cnt > 1: # ๋ฐ๋ก ์ง์ ๊น์ง prev๊ฐ ์ด์ด์ ธ ์์์
compress += str(cnt) + prev
else: # ์ค์ง ํ๋๋ง ์ด์ด์ง๋ ์ํ
compress += prev
prev = curr
cnt = 1
# ๋งจ ๋ง์ง๋ง์์ ์ฒ๋ฆฌํ๊ธฐ
if cnt > 1: # ๋ฐ๋ก ์ง์ ๊น์ง prev๊ฐ ์ด์ด์ ธ ์์์
compress += str(cnt) + prev
else: # ์ค์ง ํ๋๋ง ์ด์ด์ง๋ ์ํ
compress += prev
return compress
def solution(s):
# ์ฃผ์์ฌํญ: ์์ถ์ด ๋๋ค๊ณ ํด์ ์์ถํ๋๊ฒ ํญ์ ์งง์์ง๋ ๊ฒ์ ์๋๋ค.
# ์ฃผ์์ฌํญ: ๋ฌธ์์ด์ ์ ์ผ ์๋ถํฐ ์ ํด์ง ๊ธธ์ด๋งํผ ์๋ผ์ผ ํ๋ค.
answer = len(s)
for i in range(1, len(s)//2+1): # ์ต์ 2๊ฐ๋ฌดํฐ ์ ์ฒด ๊ธธ์ด์ ๋ฐ๊น์ง ์์ถ ๊ฐ๋ฅ
answer = min(len(compress(s,i)),answer)
return answer
์ฒซ ์๋
๋ต์ ๋ง๊ธด ๋ง์๋๋ฐ ,, dict๋ก ์ฒ๋ฆฌํ๋๊ฒ ์ต์ ์ด ์๋์์ ๊ฒ ๊ฐ๋ค
์ค์ ๋ก abab๊ฐ 2๊ฐ์ ๋ญํ ์ด์์ ๋ณด์ธ๋ค๋ฉด ๊ทธ๊ฑธ ์ ๋๋ก ์ ์ฅํ๋ ํ์์ ์๋์๊ธฐ ๋๋ฌธ์ ์์๊ฒ๋ง ์ ์ฅํ์
def compress(s, num):
compression = {}
for i in range(0,len(s),num):
if i + num <= len(s):
tmp = s[i:i+num]
if tmp in compression:
if compression[tmp][0] + num == i:
compression[tmp][0] = i
compression[tmp][1] += 1
else:
compression[tmp] = [i,1]
for key, value in compression.items():
for i in range(value[1],1,-1):
s = s.replace(key*i,str(i)+key)
return s
def solution(s):
# ์ฃผ์์ฌํญ: ์์ถ์ด ๋๋ค๊ณ ํด์ ์์ถํ๋๊ฒ ํญ์ ์งง์์ง๋ ๊ฒ์ ์๋๋ค.
# ์ฃผ์์ฌํญ: ๋ฌธ์์ด์ ์ ์ผ ์๋ถํฐ ์ ํด์ง ๊ธธ์ด๋งํผ ์๋ผ์ผ ํ๋ค.
comp_list = [s] # ์์ถ ๊ธธ์ด 1์ผ ๋
for i in range(1, len(s)//2+1): # ์ต์ 2๊ฐ๋ฌดํฐ ์ ์ฒด ๊ธธ์ด์ ๋ฐ๊น์ง ์์ถ ๊ฐ๋ฅ
comp_list.append(compress(s,i))
answer = 1000
for c in comp_list:
if len(c) < answer:
answer = len(c)
return answer