📜

Palindrome Check

Palindrome Check - Explanation

보통 문자열 O(n) O(n)

Problem Summary

Write a function that checks if a string is a palindrome (reads the same forwards and backwards).

Go to Problem →

Detailed Explanation

이 문제는 **회문(palindrome) 판별 알고리즘**을 학습합니다. 회문은 앞에서 읽으나 뒤에서 읽으나 같은 문자열입니다. **기본 접근법: 뒤집어서 비교** 1. 문자열을 소문자로 통일 (대소문자 무시를 위해) 2. 문자열을 뒤집기 3. 원본과 뒤집은 문자열 비교 **예시: "racecar"** - 소문자: "racecar" - 뒤집기: "racecar" - 비교: "racecar" === "racecar" → true **예시: "hello"** - 소문자: "hello" - 뒤집기: "olleh" - 비교: "hello" === "olleh" → false **투 포인터 방법 (최적화)** 메모리를 아끼려면 양쪽 끝에서 시작해 중앙으로 이동하며 비교: ```javascript let left = 0, right = str.length - 1; while (left < right) { if (str[left] !== str[right]) return false; left++; right--; } return true; ``` **빈 문자열과 한 글자** 빈 문자열과 한 글자 문자열은 정의상 회문입니다.

Solution Code

solution.js
function isPalindrome(str) {
  const cleaned = str.toLowerCase();
  return cleaned === cleaned.split('').reverse().join('');
}

Key Concepts from This Problem

1. 회문 알고리즘
2. 문자열 비교
3. 대소문자 정규화
4. 투 포인터 기법

Common Mistakes

대소문자를 고려하지 않으면 "Racecar"가 false로 판별됩니다
공백이나 특수문자 처리가 필요한 경우 추가 정제가 필요합니다
빈 문자열도 회문임을 잊지 마세요

Hints

Hint 1: 문자열을 뒤집어서 원본과 비교하세요.
Hint 2: 대소문자를 통일하면 비교가 쉬워집니다.

Complexity Analysis

Time Complexity

O(n)

Grows linearly with input size

Space Complexity

O(n)

Uses memory proportional to input size

Related Tags

#문자열 #회문 #알고리즘