๐ ๋ฌธ์ ์ค๋ช
๋ฐ์ดํฐ ์ฒ๋ฆฌ ์ ๋ฌธ๊ฐ๊ฐ ๋๊ณ ์ถ์ "์ดํผ์น"๋ ๋ฌธ์์ด์ ์์ถํ๋ ๋ฐฉ๋ฒ์ ๋ํด ๊ณต๋ถ๋ฅผ ํ๊ณ ์์ต๋๋ค. ์ต๊ทผ์ ๋๋์ ๋ฐ์ดํฐ ์ฒ๋ฆฌ๋ฅผ ์ํ ๊ฐ๋จํ ๋น์์ค ์์ถ ๋ฐฉ๋ฒ์ ๋ํด ๊ณต๋ถ๋ฅผ ํ๊ณ ์๋๋ฐ, ๋ฌธ์์ด์์ ๊ฐ์ ๊ฐ์ด ์ฐ์ํด์ ๋ํ๋๋ ๊ฒ์ ๊ทธ ๋ฌธ์์ ๊ฐ์์ ๋ฐ๋ณต๋๋ ๊ฐ์ผ๋ก ํํํ์ฌ ๋ ์งง์ ๋ฌธ์์ด๋ก ์ค์ฌ์ ํํํ๋ ์๊ณ ๋ฆฌ์ฆ์ ๊ณต๋ถํ๊ณ ์์ต๋๋ค.
๊ฐ๋จํ ์๋ก "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์ด ๋ฉ๋๋ค.
๐ ๋์ ์๋ฃจ์
function solution(s) {
let answer = s.length;
const mid = Math.floor(s.length/2);
for (let i=1; i<=mid; i++){
let count = 1;
let result = '';
let temp = s.substring(i);
let zip = s.substring(0, i);
while (zip) {
let cur = temp.substring(0, i);
if (zip === cur) {
count += 1;
} else {
result += `${count>1?count:''}${zip}`;
count = 1;
zip = cur;
}
temp = temp.substring(i);
}
answer = (answer > result.length ? result.length : answer) ;
}
return answer;
}
๐ ์ ๊ทผ ๋ฐฉ๋ฒ
- ๋ฌธ์ ํด๊ฒฐ ๊ณผ์ ์ด ๋ณต์กํ๊ฒ ๋๊ปด์ ธ ์ ๊ทผ ๋ฐฉ๋ฒ์ ์๋์ฝ๋๋ก ๋ช ํํ ์ ๋ฆฌํ๋ ๊ธธ์ด ๋ณด์ด๋ ๊ธฐ๋ถ์ด์๋ค. ๊ทธ ๋ด์ฉ์ ๋ค์๊ณผ ๊ฐ๋ค.
1. ์ต๋๋ก ์์ถ๋ ์ ์๋ ๊ธธ์ด: s / 2
2. 1 ~ n ๋จ์๋ก ์์ถํด๊ฐ๋ฉฐ ๊ธธ์ด๋ฅผ ๋น๊ตํ์ฌ ์ ์ฅํ ๊ณต๊ฐ ํ์
3. n ๋จ์๋ก ๋ฌธ์์ด ๋๋์ด ๋ณด๊ด
4. ์ง์ ์ ๋ณด๊ดํ๋ ๋ด์ฉ๊ณผ ๊ฐ๋ค๋ฉด count += 1
5. ์ง์ ์ ๋ณด๊ดํ๋ ๋ด์ฉ๊ณผ ๋ค๋ฅด๋ค๋ฉด count + ์ง์ ๋ฌธ์์ด, count ๋ 1๋ก ์ด๊ธฐํ, ๋ณด๊ดํ ๋ฌธ์์ด ์ด๊ธฐํ
6. ๋ฌธ์์ด ์์ถ ๋๋๋ฉด ์ ์ฅ์์ ๊ธธ์ด ๋น๊ต ํ ๋ ๋ฎ์ ๊ฐ ๋ณด๊ด
7. ์ ์ฅ๋ ๊ธธ์ด ์ค ๊ฐ์ฅ ์งง์ ๊ธธ์ด ๋ฐํ
- ๋ฐ๋ณต๋ฌธ์ ์ฌ๋ฌ๋ฒ ๋๋ฆฌ๊ฒ ๋ ๊ฒ์ ์์ํ๊ณ , ๋ฐ๋ณต๋ฌธ์ ํ์๋ฅผ ์ต๋ํ ์ค์ผ ์ ์๋ ๋ฐฉ๋ฒ์ ๋ ์ฌ๋ฆฐ ๊ฒ์ด 1๋ฒ์ด์๋ค. ์ด์ฐจํผ ๋ชจ๋ ๋ฌธ์์ด์ ๋ฌธ์์ด์ ์ ๋ฐ ๊ธธ์ด๋ฅผ ์ด๊ณผํ ๊ฐ์ผ๋ก๋ ์์ถํ ์ ์๊ธฐ ๋๋ฌธ์ด๋ค. (์์: 'abca' ๋ ์ต๋ 2๊ฐ์ฉ ๋ฌถ์ด์ ์์ถํ ์ ์์)
- ์๋ stack ๋๋ queue ๋ฅผ ์จ์ ์ผ์นํ๋ ๊ฐ์๋งํผ ๋ฌธ์์ด์ ํฉ์ณ์ผ ํ ๊ฒ์ด๋ผ๊ณ ์๊ฐํ๋ค. ๊ทธ๋ฌ๋ ์ด ๋ฐฉ๋ฒ์ ์ฐ์ง ์๊ณ ๋ฌธ์์ด์ ๊ณ์ ๋ฎ์ด์์์ค ์ด์ ๋ count ๋ฅผ ์ฆ๊ฐ์ํค๋ฉด ์ด์ฐจํผ ํฉ์ณ์ง๋ ๋ฌธ์์ด์ ๋ณํ์ง ์๊ธฐ ๋๋ฌธ์ด๋ค. ๋ฐ๋ผ์ ํ์ฌ ๋น๊ต์ ๋์์ด ๋๋ ๋ฌธ์์ด์ ๋ด์ ๋ณ์๋ฅผ ํ๋ ๋ง๋ค๊ณ , ์๋ก ๋ค์ด์ค๋ ๊ฐ๊ณผ ๋น๊ตํด์ ๋ค๋ฅผ ๋์๋ง ์ด๊ธฐํํ๊ณ ๋ฎ์ด์์์ค์ผ๋ก์จ ์์ ์ ๊ฐ์ํํ๋ค.
๋๊ธ