🗃️javascript/코테 프레임 문제

3-1 회문문자열[투 포인터 방법론]

하얀성 2023. 9. 15. 14:46

<제출답안>

unshift를 통해 앞에서부터 돌려서 문자를 반대로 돌렸다. 

맞게 풀긴했다. 하지만 밑 코드 보단 효율은 썩 좋지 않다.

function solution(s){
  let arr2 =[];
  let arr1 = s.toUpperCase();
  for(let i of arr1){
    arr2.unshift(i)
  }
  if(arr1 === arr2.join("")){
    return "Yes"
  }else{
    return "No"
  }
}

let str="gooG";
console.log(solution(str));

 

<다른 풀이>

이런식으로 투 포인터로 배열의 앞과 뒤에서 동시에 접근하는 방식.

이런 방식이 나중에 고급문제들 가면 더 필요하다.

다양한 방식으로 푸는게 정말 중요하다.

아님 reverse()메서드로 돌려도 된다.

 

이 방법은 문자열의 절반만큼만 반복하므로 시간 복잡도가 O(n/2)가 되어 조금 더 효율적입니다.

1
2
3
4
5
6
7
8
9
10
11
12
function solution(s){
                let answer="YES";
                s=s.toLowerCase();
                let len=s.length;
                for(let i=0; i<Math.floor(len/2); i++){
                    if(s[i]!=s[len-i-1]) return "NO";
                }
                return answer;
            }
            
            let str="goooG";
            console.log(solution(str));
cs