๋ฌธ์ ๋งํฌ
์ ๊ทผ ๋ฐฉ๋ฒ
๋ฌธ์์ด์ 1๊ฐ๋ถํฐ ๋ฌธ์์ด/2๊ฐ๊น์ง ๋ฐ๋ณตํ์ฌ ์๋ผ ๋น๊ตํ๋ ๋ฐฉ์์ผ๋ก ์ ๊ทผํ์๋ค.
"ababcdcdababcdcd"
a b a b c d c d a b a b c d c d
ab ab cd cd ab ab cd cd => 2ab 2cd 2ab 2cd๋ฅผ ์ฐ์ ์ ์ฅ
aba bcd cda bab cdc d
abab cdcd abab cdcd
ababc dcdab abcdc d
ababcd cdabab cdcd
ababcdc dababcd cd
ababcdcd ababcdcd => s.length / 2 ๊น์ง๋ง ๊ฒ์ฌ, 2ab 2cd 2ab 2cd๋ฅผ 2ababcdcd๋ก ๋์ฒด
์ฒซ for๋ฌธ์์ ๋ช๊ฐ์ฉ ์๋ฅผ์ง ํ๋จํ๊ณ
2๋ฒ์งธ for๋ฌธ์์ ๋ฌธ์์ด ์ ์ฒด๋ฅผ ๋น๊ตํ๋ ๋ฐฉ์์ผ๋ก ์ ๊ทผํ์๋ค.
let answer = s.length; for (let i = 1; i <= s.length / 2; i++){ let compressedStr = ""; let count = 1; for( let j = i; j <= s.length; j += i){ console.log(`i : ${i}, j : ${j}`) if(s.slice(j-i,j) === s.slice(j,j+i)) count += 1; else{ compressedStr += (count > 1 ? count : "") + s.slice(j-i, j) count = 1; } } console.log(compressedStr) answer = Math.min(answer, compressedStr.length); }โ
์ฒ์ ์์ฑํ ์ฝ๋์ธ๋ฐ console.log(compressedStr)์ ์ถ๋ ฅํด๋ณด๋ฉด ์์์ ์ฐํ ๋ถ์ ๋ฐฐ๊ฒฝ์ผ๋ก ํ์ํ ๋ฌธ์์ด
(์ฆ ๋ฑ ๋๋์ด ๋จ์ด์ง์ง ์๋ ๋ถ๋ถ)์ ๋ฐ์์ค์ง ๋ชปํ๋ค.
์ด๋ฅผ ๋ฐ์์ค๊ธฐ ์ํด์๋ ๋๋ฒ์งธ for๋ฌธ์์ s.slice(j+i, s.length)์ ๋ฌธ์์ด ๋์ ์ถ๊ฐํด์ผํ๋๋ฐ
๋๋ฒ์งธ for๋ฌธ์์๋ j๊ฐ ๋์์ด ๋ณํํ๊ธฐ ๋๋ฌธ์
๋๋ฒ์งธ for๋ฌธ ๋ฐ์์ ๋ณ์ prev๋ฅผ ๋ง๋ค์ด ์ ๊ทผํ๋ ๋ฐฉ์์ผ๋ก ํ์ด๋ฅผ ์งํํ์๋ค.
function solution(s) {
let answer = s.length;
for (let i = 1; i <= s.length / 2; i++){
let prev = s.slice(0, i);
let compressedStr = "";
let count = 1;
for( let j = i; j <= s.length; j += i){
let next = s.slice(j, j+i);
if (prev === next)
count += 1;
else{
compressedStr += (count > 1 ? count : "") + s.slice(j-i, j)
count = 1;
prev = next;
}
}
compressedStr += (count > 1 ? count : "") + prev
answer = Math.min(answer, compressedStr.length);
}
return answer;
}
'์ฝ๋ฉํ ์คํธ > ํ๋ก๊ทธ๋๋จธ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Javascript] ๊ธฐ๋ฅ๊ฐ๋ฐ (42586) (0) | 2022.04.30 |
---|---|
[Javascript] 124 ๋๋ผ์ ์ซ์ (12899) (0) | 2022.04.29 |
[Javascript] ์คํ์ฑํ ๋ฐฉ (42888) (0) | 2022.04.28 |
[Javascript] ์์ฐ(12982) (0) | 2022.04.28 |
[Javascript] ์คํจ์จ(42889) (0) | 2022.04.28 |