๋ฌธ์
๋ฐ์ดํฐ ์ฒ๋ฆฌ ์ ๋ฌธ๊ฐ๊ฐ ๋๊ณ ์ถ์ "์ดํผ์น"๋ ๋ฌธ์์ด์ ์์ถํ๋ ๋ฐฉ๋ฒ์ ๋ํด ๊ณต๋ถ๋ฅผ ํ๊ณ ์์ต๋๋ค. ์ต๊ทผ์ ๋๋์ ๋ฐ์ดํฐ ์ฒ๋ฆฌ๋ฅผ ์ํ ๊ฐ๋จํ ๋น์์ค ์์ถ ๋ฐฉ๋ฒ์ ๋ํด ๊ณต๋ถ๋ฅผ ํ๊ณ ์๋๋ฐ, ๋ฌธ์์ด์์ ๊ฐ์ ๊ฐ์ด ์ฐ์ํด์ ๋ํ๋๋ ๊ฒ์ ๊ทธ ๋ฌธ์์ ๊ฐ์์ ๋ฐ๋ณต๋๋ ๊ฐ์ผ๋ก ํํํ์ฌ ๋ ์งง์ ๋ฌธ์์ด๋ก ์ค์ฌ์ ํํํ๋ ์๊ณ ๋ฆฌ์ฆ์ ๊ณต๋ถํ๊ณ ์์ต๋๋ค.
๊ฐ๋จํ ์๋ก "aabbaccc"์ ๊ฒฝ์ฐ "2a2ba3c"(๋ฌธ์๊ฐ ๋ฐ๋ณต๋์ง ์์ ํ๋ฒ๋ง ๋ํ๋ ๊ฒฝ์ฐ 1์ ์๋ตํจ)์ ๊ฐ์ด ํํํ ์ ์๋๋ฐ, ์ด๋ฌํ ๋ฐฉ์์ ๋ฐ๋ณต๋๋ ๋ฌธ์๊ฐ ์ ์ ๊ฒฝ์ฐ ์์ถ๋ฅ ์ด ๋ฎ๋ค๋ ๋จ์ ์ด ์์ต๋๋ค. ์๋ฅผ ๋ค๋ฉด, "abcabcdede"์ ๊ฐ์ ๋ฌธ์์ด์ ์ ํ ์์ถ๋์ง ์์ต๋๋ค. "์ดํผ์น"๋ ์ด๋ฌํ ๋จ์ ์ ํด๊ฒฐํ๊ธฐ ์ํด ๋ฌธ์์ด์ 1๊ฐ ์ด์์ ๋จ์๋ก ์๋ผ์ ์์ถํ์ฌ ๋ ์งง์ ๋ฌธ์์ด๋ก ํํํ ์ ์๋์ง ๋ฐฉ๋ฒ์ ์ฐพ์๋ณด๋ ค๊ณ ํฉ๋๋ค.
์๋ฅผ ๋ค์ด, "ababcdcdababcdcd"์ ๊ฒฝ์ฐ ๋ฌธ์๋ฅผ 1๊ฐ ๋จ์๋ก ์๋ฅด๋ฉด ์ ํ ์์ถ๋์ง ์์ง๋ง, 2๊ฐ ๋จ์๋ก ์๋ผ์ ์์ถํ๋ค๋ฉด "2ab2cd2ab2cd"๋ก ํํํ ์ ์์ต๋๋ค. ๋ค๋ฅธ ๋ฐฉ๋ฒ์ผ๋ก 8๊ฐ ๋จ์๋ก ์๋ผ์ ์์ถํ๋ค๋ฉด "2ababcdcd"๋ก ํํํ ์ ์์ผ๋ฉฐ, ์ด๋๊ฐ ๊ฐ์ฅ ์งง๊ฒ ์์ถํ์ฌ ํํํ ์ ์๋ ๋ฐฉ๋ฒ์ ๋๋ค.
๋ค๋ฅธ ์๋ก, "abcabcdede"์ ๊ฐ์ ๊ฒฝ์ฐ, ๋ฌธ์๋ฅผ 2๊ฐ ๋จ์๋ก ์๋ผ์ ์์ถํ๋ฉด "abcabc2de"๊ฐ ๋์ง๋ง, 3๊ฐ ๋จ์๋ก ์๋ฅธ๋ค๋ฉด "2abcdede"๊ฐ ๋์ด 3๊ฐ ๋จ์๊ฐ ๊ฐ์ฅ ์งง์ ์์ถ ๋ฐฉ๋ฒ์ด ๋ฉ๋๋ค. ์ด๋ 3๊ฐ ๋จ์๋ก ์๋ฅด๊ณ ๋ง์ง๋ง์ ๋จ๋ ๋ฌธ์์ด์ ๊ทธ๋๋ก ๋ถ์ฌ์ฃผ๋ฉด ๋ฉ๋๋ค.
์์ถํ ๋ฌธ์์ด s๊ฐ ๋งค๊ฐ๋ณ์๋ก ์ฃผ์ด์ง ๋, ์์ ์ค๋ช ํ ๋ฐฉ๋ฒ์ผ๋ก 1๊ฐ ์ด์ ๋จ์๋ก ๋ฌธ์์ด์ ์๋ผ ์์ถํ์ฌ ํํํ ๋ฌธ์์ด ์ค ๊ฐ์ฅ ์งง์ ๊ฒ์ ๊ธธ์ด๋ฅผ return ํ๋๋ก solution ํจ์๋ฅผ ์์ฑํด์ฃผ์ธ์.
์ ํ ์ฌํญ
- s์ ๊ธธ์ด๋ 1 ์ด์ 1,000 ์ดํ์ ๋๋ค.
- s๋ ์ํ๋ฒณ ์๋ฌธ์๋ก๋ง ์ด๋ฃจ์ด์ ธ ์์ต๋๋ค.
์ ์ถ๋ ฅ ์
"aabbaccc" | 7 |
"ababcdcdababcdcd" | 9 |
"abcabcdede" | 8 |
"abcabcabcabcdededededede" | 14 |
"xababcdcdababcdcd" | 17 |
ํด์ค ์ฝ๋
import re
def solution(s):
if len(s) <= 2:
return len(s)
resultCount = []
for i in range(1,len(s)//2 + 1):
# sub๋ ๋์ ํ๋ค๋ผ๋ ๋ป
# ๊ธ์๊ฐ ํ ๊ฐ๋ฉด ๊ทธ๊ฑธ ํ ๊ฐ์ ๊ทธ๋ฃน์ผ๋ก ๋ฌถ๊ณ ๋์ด์ฐ๊ธฐ๋ฅผ ํด์ฃผ๊ณ ๋์ด์ฐ๊ธฐ ๊ธฐ์ค์ผ๋ก split
reList = re.sub('(\w{%i})' % i, '\g<1> ', s).split()
count = 1
result = []
for j in range(len(reList)):
if j < len(reList)-1 and reList[j] == reList[j+1]:
count += 1
else:
if count == 1:
result.append(reList[j])
else:
result.append(str(count) + reList[j])
count = 1
resultCount.append(len(''.join(result)))
return min(resultCount)
๋ถ์ > ์ผ๋จ import re๋ฅผ ์ด์ฉํด ์ ๊ทํํ์์ผ๋ก ๋์ฌ ์ ์๋ ๋ชจ๋ ๊ฒฝ์ฐ์ ์๋ฅผ ๋ฐฐ์ด๋ก ๋ง๋ ๋ค. ์ด๋, ๋ชจ๋ ๊ฒฝ์ฐ์ ์๋ s ๊ธธ์ด์ ์ ๋ฐ๋งํผ๋ง ๊ตฌํ๋ฉด ๋๋๋ฐ, ์ด๋ ๊ธธ์ด๊ฐ ์ ๋ฐ์ด ๋์ด๊ฐ๋ฉด ๊ฐ์ ์๋งํผ ์๋ฅผ ์ ์๊ธฐ ๋๋ฌธ์ด๋ค. (ex.aaabbbb -> aaabb bb) ๊ทธ๋ฆฌ๊ณ ์ฐจ๋ก๋๋ก ๋ฐฐ์ด ๋ด์ ์ฐ์ํ๋ ๋ ์๊ฐ ๊ฐ์ผ๋ฉด ์นด์ดํธ๋ฅผ ์ฆ๊ฐ์ํค๋ค๊ฐ ์นด์ดํธ๊ฐ 1์ด๋ฉด(๊ทธ ์ ์๊ฐ ์ฐ์ํ๋ ์๊ฐ ์๋๋ผ๋ ๊ฒ) ๊ทธ๋๋ก result[j]๋ฅผ ์ถ๊ฐํ๊ณ ์นด์ดํธ๊ฐ 1์ด ์๋๋ฉด(๊ทธ ์ ์๊ฐ ์ฐ์ํ๋ ์๋ผ๋ ๊ฒ) result[j]์ ํจ๊ป count๋ฅผ ๋ฌธ์๋ก ์ถ๊ฐํด์ค๋ค. ๋ง์ง๋ง์ผ๋ก ๊ฐ ๋ฐฐ์ด์ ๋ฌธ์์ด๋ก ๋ฐ๊พผ ๊ฒ์ ์๋ก์ด ๋ฐฐ์ด์ ์ถ๊ฐํด์ฃผ๊ณ ์ด ๋ฐฐ์ด ์ค ๊ฐ์ฅ ์์ ์๋ฅผ ๊ฐ์ผ๋ก ๋ฐํํ๋ฉด ๋๋ค.
'Algorithm > Programmers' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Programmers] ๋ก๋์ ์ต๊ณ ์์์ ์ต์ ์์ (0) | 2022.04.28 |
---|---|
[Programmers] ์ ๊ณ ๊ฒฐ๊ณผ ๋ฐ๊ธฐ (0) | 2022.04.27 |
[Programmers] ํ๋ฆฐํฐ (0) | 2022.04.14 |
[Programmers] ํผ๋ณด๋์น ์ (0) | 2022.04.14 |
[Programmers] ๋ค๋ฆฌ๋ฅผ ์ง๋๋ ํธ๋ญ (0) | 2022.04.13 |