[JavaScript] 프로그래머스 가장 긴 팰린드롬

김예진·2021년 1월 20일
0

코딩 테스트

목록 보기
26/42

문제출처

function solution(s) {
    let answer = 1;

    for (let cnt=2; cnt<=s.length; cnt++) {
        for (let i=0; i<=s.length-cnt; i++) {
            const str = s.substr(i, cnt);
            const mid = cnt % 2 === 0 ? cnt / 2 : Math.floor(cnt / 2);
            const left = str.substr(0, mid);
            const right = str.substr(-mid);
            let flag = true;
            for (let j=0; j<mid; j++) {
                if (str[j] !== str[cnt - j - 1]) {
                    flag = false;
                    break;
                }
            }
            if (flag) {
                answer = cnt;
                break;
            }
        }
    }

    return answer;
}

고찰

처음에 right 을 거꾸로 뒤집으려고 const right = str.substr(-mid).split('').reverse().join(''); 이렇게 분리 + 뒤집기 + 다시 조합 했었는데 시간초과가 떠서 다른 방법으로 바꿨다.

0개의 댓글