ํด๋น ๊ฒ์๋ฌผ์ ์ฒ์ ๋ฆฐ ๊ฐ๋ฐ ๋ธ๋ก๊ทธ์ ๊ฒ์๋ฌผ์ ๋ณด๊ณ ์ฐธ๊ณ ํ์ฌ ํ์ด๋์์์ ๋ฏธ๋ฆฌ ๋ฐํ๋๋ค.
๋ฌธ์ ์ค๋ช
์๋ค๋ฅผ ๋ค์ง์ด๋ ๋๊ฐ์ ๋ฌธ์์ด์ ํฐ๋ฆฐ๋๋กฌ(palindrome)์ด๋ผ๊ณ ํฉ๋๋ค.
๋ฌธ์์ด s๊ฐ ์ฃผ์ด์ง ๋, s์ ๋ถ๋ถ๋ฌธ์์ด(Substring)์ค ๊ฐ์ฅ ๊ธด ํฐ๋ฆฐ๋๋กฌ์ ๊ธธ์ด๋ฅผ return ํ๋ solution ํจ์๋ฅผ ์์ฑํด ์ฃผ์ธ์.
์๋ฅผ๋ค๋ฉด, ๋ฌธ์์ด s๊ฐ "abcdcba"์ด๋ฉด 7์ returnํ๊ณ "abacde"์ด๋ฉด 3์ returnํฉ๋๋ค.
์ ํ์ฌํญ
๋ฌธ์์ด s์ ๊ธธ์ด : 2,500 ์ดํ์ ์์ฐ์
๋ฌธ์์ด s๋ ์ํ๋ฒณ ์๋ฌธ์๋ก๋ง ๊ตฌ์ฑ
์ ์ถ๋ ฅ ์
์ ์ถ๋ ฅ ์ ์ค๋ช
์ ์ถ๋ ฅ ์ #1
4๋ฒ์งธ์๋ฆฌ 'd'๋ฅผ ๊ธฐ์ค์ผ๋ก ๋ฌธ์์ด s ์ ์ฒด๊ฐ ํฐ๋ฆฐ๋๋กฌ์ด ๋๋ฏ๋ก 7์ returnํฉ๋๋ค.
์ ์ถ๋ ฅ ์ #2
2๋ฒ์งธ์๋ฆฌ 'b'๋ฅผ ๊ธฐ์ค์ผ๋ก "aba"๊ฐ ํฐ๋ฆฐ๋๋กฌ์ด ๋๋ฏ๋ก 3์ returnํฉ๋๋ค.
๋์ ํ์ด
function solution(s) {
// ์๋ค๋ก ๊ฐ์ ์ ๋งํผ ์ฐ์๋๋ ๋ฌธ์์ด์ ๋ชจ๋ ๊ฒ์ฌํ๋ ์ฝ๋
// ex ) i === 7 ? 'abcdcba'
// ex ) i === 6 ? 'abcdcb' , 'bcdcb'
// ...
for(let i = s.length ; i > 0 ; i--) {
for(let j = 0 ; j <= s.length - i ; j ++) {
if(isPalindrome(s.slice(j,i+j))) return i
}
}
function isPalindrome(str) {
// ์ ๋ฐ์ ๋๋์ด i ๋ฒ์งธ์ ๋ฌธ์์ด์ ๋์์ i-1 ๋ฒ์งธ๊ฐ ๋ค๋ฅด๋ค๋ฉด ํฐ๋ฆฐ๋๋กฌ X
const half = Math.floor(str.length/2)
for(let i = 0 ; i < half ; i ++) {
if(str[i] !== str[str.length-i-1]) return false
}
return true
}
}