๐ฌ ๋ฌธ์์ด ์์ถ
ํ๋ก๊ทธ๋๋จธ์ค Level2
[Class2] ๋ฌธ์์ด ์์ถ
๋ฌธ์ ์ค๋ช
๋ฐ์ดํฐ ์ฒ๋ฆฌ ์ ๋ฌธ๊ฐ๊ฐ ๋๊ณ ์ถ์ โ์ดํผ์นโ๋ ๋ฌธ์์ด์ ์์ถํ๋ ๋ฐฉ๋ฒ์ ๋ํด ๊ณต๋ถ๋ฅผ ํ๊ณ ์์ต๋๋ค. ์ต๊ทผ์ ๋๋์ ๋ฐ์ดํฐ ์ฒ๋ฆฌ๋ฅผ ์ํ ๊ฐ๋จํ ๋น์์ค ์์ถ ๋ฐฉ๋ฒ์ ๋ํด ๊ณต๋ถ๋ฅผ ํ๊ณ ์๋๋ฐ, ๋ฌธ์์ด์์ ๊ฐ์ ๊ฐ์ด ์ฐ์ํด์ ๋ํ๋๋ ๊ฒ์ ๊ทธ ๋ฌธ์์ ๊ฐ์์ ๋ฐ๋ณต๋๋ ๊ฐ์ผ๋ก ํํํ์ฌ ๋ ์งง์ ๋ฌธ์์ด๋ก ์ค์ฌ์ ํํํ๋ ์๊ณ ๋ฆฌ์ฆ์ ๊ณต๋ถํ๊ณ ์์ต๋๋ค. ๊ฐ๋จํ ์๋ก โ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๋ ์ํ๋ฒณ ์๋ฌธ์๋ก๋ง ์ด๋ฃจ์ด์ ธ ์์ต๋๋ค.
์ ์ถ๋ ฅ ์
|s|result| |โโโโโโโโโโ|โโ| |โaabbacccโ|7| |โababcdcdababcdcdโ|9| |โabcabcdedeโ|8| |โabcabcabcabcdedededededeโ|14| |โxababcdcdababcdcdโ|17|
์ ์ถ๋ ฅ ์์ ๋ํ ์ค๋ช
์
์ถ๋ ฅ ์ #1
๋ฌธ์์ด์ 1๊ฐ ๋จ์๋ก ์๋ผ ์์ถํ์ ๋ ๊ฐ์ฅ ์งง์ต๋๋ค.
์
์ถ๋ ฅ ์ #2
๋ฌธ์์ด์ 8๊ฐ ๋จ์๋ก ์๋ผ ์์ถํ์ ๋ ๊ฐ์ฅ ์งง์ต๋๋ค.
์
์ถ๋ ฅ ์ #3
๋ฌธ์์ด์ 3๊ฐ ๋จ์๋ก ์๋ผ ์์ถํ์ ๋ ๊ฐ์ฅ ์งง์ต๋๋ค.
์
์ถ๋ ฅ ์ #4
๋ฌธ์์ด์ 2๊ฐ ๋จ์๋ก ์๋ฅด๋ฉด "abcabcabcabc6de" ๊ฐ ๋ฉ๋๋ค.
๋ฌธ์์ด์ 3๊ฐ ๋จ์๋ก ์๋ฅด๋ฉด "4abcdededededede" ๊ฐ ๋ฉ๋๋ค.
๋ฌธ์์ด์ 4๊ฐ ๋จ์๋ก ์๋ฅด๋ฉด "abcabcabcabc3dede" ๊ฐ ๋ฉ๋๋ค.
๋ฌธ์์ด์ 6๊ฐ ๋จ์๋ก ์๋ฅผ ๊ฒฝ์ฐ "2abcabc2dedede"๊ฐ ๋๋ฉฐ, ์ด๋์ ๊ธธ์ด๊ฐ 14๋ก ๊ฐ์ฅ ์งง์ต๋๋ค.
์
์ถ๋ ฅ ์ #5
๋ฌธ์์ด์ ์ ์ผ ์๋ถํฐ ์ ํด์ง ๊ธธ์ด๋งํผ ์๋ผ์ผ ํฉ๋๋ค.
๋ฐ๋ผ์ ์ฃผ์ด์ง ๋ฌธ์์ด์ x / ababcdcd / ababcdcd ๋ก ์๋ฅด๋ ๊ฒ์ ๋ถ๊ฐ๋ฅ ํฉ๋๋ค.
์ด ๊ฒฝ์ฐ ์ด๋ป๊ฒ ๋ฌธ์์ด์ ์๋ผ๋ ์์ถ๋์ง ์์ผ๋ฏ๋ก ๊ฐ์ฅ ์งง์ ๊ธธ์ด๋ 17์ด ๋ฉ๋๋ค.
# ๐ ๊ฐ์ ธ๋ค ์ฐ๊ธฐ
์ฒ์์๋ ์คํ์ ๋ ์ฌ๋ ธ๋ค. ์๋ํ๋ฉด ๋ฌธ์์ด์์ ํน์ ๋ฌธ์์ด์ ๊ฒ์ํ๋ ๋ฌธ์ ์ด๊ธฐ ๋๋ฌธ์ด๋ค.
๊ทธ๋ฌ๋ ์๊ฐ๋ณต์ก๋๋ฅผ ๊ตฌํด๋ณด๊ณ ๋ธ๋ฃจํธ ํฌ์ค๋ก ํ์ด์ผ๊ฒ ๋ค๊ณ ์๊ฐํ๋ค.
+ ์
๋ ฅ ๋ฐ์ดํฐ ๊ฐ์: 1000 ๐๐ป O(N^2*logN)๊น์ง ๊ฐ๋ฅ
+ ๋ธ๋ฃจํธ ํฌ์ค๋ก ์์๋๋ ์๊ฐ ๋ณต์ก๋ ๐๐ป O(N^2)
# ๐ ๊ณผ์ ์ค๊ณ/๊ด๋ฆฌ
![แแ
งแซแแ
ณแธแแ
กแผ-63](https://user-images.githubusercontent.com/88064555/181485252-1849708b-fcbe-4cd6-86f2-df371ecad727.jpg)
์
๋ ฅ: aabbaccc๊ฐ ๋ค์ด์์ ๋๋ฅผ ์์๋ก ์งํํด๋ณด๊ฒ ๋ค.
๋จผ์ 1๋ถํฐ ์ ๋ฐ๊น์ง ๋ฌธ์์ด์ ๋๋๋ ๋ชจ๋ ๊ฒฝ์ฐ๋ฅผ ๊ตฌํ๋ค. ์ด ๋, ์ ๋ฐ๊น์ง ํ์ํ๋ ์ด์ ๋ ์ด์ฐจํผ ์ ๋ฐ์ ๋์ด๊ฐ๋ ์๊ฐ ๋ฌธ์์ด ์์ถ์ด ๋์ง ์๊ธฐ ๋๋ฌธ์ด๋ค.
(๊ทธ๋ฐ๋ฐ ์ต์ข
์ ์ธ ์ฝ๋๋ ๋ถํ์ํ๋๋ผ๋ 1๋ถํฐ ์ ์ฒด๋ฅผ ๋๋์ด ํ์๋ค. ๊ทธ ์ด์ ๋ ๋ฌธ์์ด ๊ธธ์ด๊ฐ 1์ผ๋๋ ์ ๋ฐ์ผ๋ก ์ชผ๊ฐ์ง์ง ์๊ธฐ ๋๋ฌธ์ ์๋ฌ๊ฐ ๋ฐ์ํ๋ค.)
๊ทธ๋ ๊ฒ ํ์ฌ ๊ฐ๊ฐ์ ์์ถ๋ ๋ฌธ์์ด ๊ธธ์ด๋ฅผ ๋น๊ตํ์ฌ ์ต์๊ฐ์ ๋ฐํํด์ฃผ๋ฉด ์ ๋ต์ด๋ค.
![แแ
งแซแแ
ณแธแแ
กแผ-64](https://user-images.githubusercontent.com/88064555/181485322-650d8dfd-34c9-4417-a68c-71ee0562023a.jpg)
![แแ
งแซแแ
ณแธแแ
กแผ-65](https://user-images.githubusercontent.com/88064555/181485372-19362a11-703d-498d-940d-781786b7da2a.jpg)
์ด์ ๋ถํฐ๋ ๋๋์ด์ง ๊ฐ ๋ฌธ์์ด์ ๋ํ์ฌ ์ด๋ป๊ฒ ์์ถ์ด ์งํ๋๋์ง๋ฅผ ์ค๋ช
ํด๋ณด๋๋ก ํ๊ฒ ๋ค.
๊ฐ์ฅ ์ฒซ ๋ฒ์งธ ์ธ๋ฑ์ค๋ถํฐ ์์ํ์ฌ ๋ค์ ์ธ๋ฑ์ค๋ฅผ ๋น๊ตํด๋ณด์ ๊ฐ์ ๊ฐ์ด ๋์ค๋ฉด count๋ฅผ ์ฆ๊ฐ์ํค๋ฉฐ ๊ณ์ ํ์ํ๋ค.
๋ง์ฝ count๊ฐ 1์ด๋ผ๋ฉด ๊ทธ๋๋ก ์์ถ ๋ฌธ์์ด์ ๋ถ์ฌ์ฃผ๊ณ 2 ์ด์์ด๋ผ๋ฉด count์ ํจ๊ป ๊ฐ์ด ๋ถ์ฌ์ค๋ค.
๊ทธ๋ ๊ฒ ๋ฌธ์์ด ๋๊น์ง ํ์์ ๋ง์น๋ฉด ์ต์ข
์ ์ธ ์์ถ ๋ฌธ์์ด์ด ์์ฑ๋๊ณ ์ด๋ฅผ ์ ๋ต ํ๋ณด๊ตฐ ๋ฆฌ์คํธ์ ๋ฃ์ด์ค๋ค.
๋ง์ง๋ง์ ์ ๋ต ํ๋ณด๊ตฐ ๋ฆฌ์คํธ์์ ์ต์๊ฐ์ ์ ํํด์ฃผ๋ฉด ๊ทธ๊ฒ์ด ๊ณง ์ ๋ต !!!
# ๐จ๐ปโ๐ป CODE
```python
def solution(s):
candidates = []
# ๋ฌธ์์ด ๋ถ๋ฆฌ
for a in range(1,len(s)+1):
i=0
arr = []
while i+a<len(s):
arr.append(s[i:i+a])
i += a
arr.append(s[i:])
answer = ""
i=0
while 0<=i<len(arr):
count = 1
if i != len(arr)-1:
while arr[i] == arr[i+1]:
count += 1
i += 1
if i == len(arr)-1:
break
if count == 1:
answer += arr[i]
else:
answer += str(count) + arr[i]
i += 1
candidates.append(len(answer))
return min(candidates)