팰린드롬 (Palindrome)

dowon kim·2023년 9월 3일

팰린드롬 (Palindrome) 설명:

팰린드롬은 순서를 거꾸로 읽었을 때도 원래의 문자열이나 수열과 동일한 경우를 의미합니다. 즉, 앞에서 읽을 때와 뒤에서 읽을 때의 모양이 같으면 팰린드롬이라고 합니다.

예시:

  • 문자열: "radar", "level", "madam", "A man, a plan, a canal, Panama!"
  • 숫자: 121, 1221

팰린드롬 검사 방법:

  1. 문자열의 절반을 비교: 문자열의 앞쪽과 뒤쪽 절반을 비교하여 모든 문자가 동일한지 확인합니다.
  2. 두 포인터 방식: 하나의 포인터는 문자열의 시작에서, 다른 포인터는 문자열의 끝에서 시작하여 서로 중앙으로 이동하며 문자를 비교합니다.

자바스크립트로의 구현 예:

function isPalindrome(s) {
    // 문자열에서 알파벳과 숫자만을 추출
    const cleanedString = s.replace(/[^A-Za-z0-9]/g, '').toLowerCase();
    let left = 0;
    let right = cleanedString.length - 1;

    while (left < right) {
        if (cleanedString[left] !== cleanedString[right]) {
            return false;
        }
        left++;
        right--;
    }

    return true;
}

console.log(isPalindrome("A man, a plan, a canal, Panama!"));  // 출력: true
console.log(isPalindrome("racecar"));  // 출력: true
console.log(isPalindrome("hello"));    // 출력: false

해설:

  • isPalindrome 함수는 먼저 주어진 문자열에서 알파벳과 숫자만을 추출하여 소문자로 변환한 후, 팰린드롬인지 검사합니다.
  • 두 포인터 방식을 사용하여 문자열의 시작과 끝에서 중앙으로 이동하며 문자를 비교합니다. 만약 문자가 일치하지 않는다면 팰린드롬이 아닌 것으로 판단하고 false를 반환합니다.
  • 문자열을 모두 검사한 후 문제 없이 끝났다면 true를 반환합니다.

팰린드롬은 많은 알고리즘 문제에서 주제로 사용되며, 위의 방법은 팰린드롬을 확인하는 가장 기본적이고 간단한 방법 중 하나입니다.

profile
The pain is so persistent that it is like a snail, and the joy is so short that it is like a rabbit's tail running through the fields of autumn

0개의 댓글