[Refresh ! 코딩 테스트 / js] -가장 긴 팰린드롬

정대만·2025년 2월 14일

문제풀이

  • 앞뒤 뒤집어도 똑같다는말은 start을 index0 으로 잡고 end 를 index 마지막 으로 잡은다음 둘이 같지않으면 return 을 함
  • 시간초과 2번이 나서 남의 코드를 확인해서 다시 풀었다.

시간초과 해결하기

  • 시작과 end 가 같은경우에만 go
  • 지금 0(n^3) 여서 시간 초과가 나는것이기 때문에. 큰수가 나온다면 그냥 break 문으로 첫번째 for 문으로 가는식으로 다시 작성했다.
  • 쓸대없는 오류가 계속나서 확인해보니 :
  • 여기 코드를 작성할때 if 문 위에 check= s.slice(i,z) 으로 하고 check[i] == check[z-1] 으로 해서 오류가 나는것이였다. check 는 s의 slice 문이기 때문에 . z인덱스를 하면 복잡하게 된다.. 그부분이 헷갈렸는데 해결하였다.
  • 복잡한 알고리즘이 아니여서 금방 풀었다.

나의 코드

function solution(s)
{
    const check_is_real= function(arr){
        let start=0;
        let end=arr.length-1;
        while(start<end){
            if(arr[start]!=arr[end]) return false;
            else{
                start+=1;
                end-=1;
            }
        }
        return true;
    }
    let answer=1;
    for(var i=0; i<s.length; i++){
        for(var z=s.length; z>=0;z --){
          
            if(s[i]==s[z-1]){
               let check= s.slice(i,z);    
              const final= check_is_real(check);
              if(final){ answer= Math.max(answer,check.length)
                       break;} 
            }
          
        }
    }
    return answer;
}
profile
안녕하세요

0개의 댓글