회문 문자열(팰린드롬)


회문 문자열(팰린드롬)



👉 회문은 앞에서 읽으나 뒤에서 읽으나 똑같아야 한다. 이를 인지하고 문제를 해결해보자.

두 가지 방법이 있다.

  1. for문을 통해서 하나씩 비교하는 방법

  2. js 메서드를 이용하여 문자열을 변환 후 비교하는 방법

이제 두 가지의 방법으로 문제를 해결해보자.


function solution(s){
    let answer = "YES";
    s = s.toUpperCase();   ... 1
    let n = s.length;

    for(let i = 0; i < Math.floor(n/2); i++){   ... 2
        if(s[i] !== s[n -1-i]){   ... 3
            return "No";
        }
    }
   
    return answer;
}

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

=====

"YES"

for문을 통해 해결


👉 첫 번째, for문을 통해 문제를 해결하는 방법이다.

  1. 대소문자를 구별하지 않는다. ⇒ 문자열을 모두 대문자로 하든, 소문자로 하든 처리

  2. for문을 통해서 하나씩 비교를 하려고 한다. 가운데를 기준으로 왼쪽과 오른쪽이 같으면 된다. 이때, 홀수일 경우 소숫점을 날려버리면 가운데 인덱스가 나오게 된다. 짝수는 가운데 2개의 값이니 for문을 한번 더 돌린다 생각하고 돌려버리자.

  3. 배열[배열의 길이 - 1 -i]는 배열의 맨 끝에서 처음까지 접근할 수 있다. 이를 이용하여 맨 처음 요소와 맨 끝 요소를 비교할 수 있다.


function solution(s){
    let answer = "YES";
    s = s.toUpperCase();

    if(s.split('').reverse().join('') !== s) return "NO";
   
    return answer;
}

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

=====

"NO"

reverse() 통해 해결


👉 JS의 메서드를 이용하는 방법이다.

  1. 대소문자를 구별하지 않는다. ⇒ 문자열을 모두 대문자로 하든, 소문자로 하든 처리

  2. String의 split()을 통해 배열로 변환, Array의 reverse를 통해 배열을 거꾸로 돌린다. Array의 join()을 통해 문자열로 변환한다. 이를 통해 나온 문자열과 원본 문자열을 비교하여 값을 받으면 된다.



출처 - 자바스크립트 알고리즘 문제풀이

좋은 웹페이지 즐겨찾기