Arian Soleimanzadeh
  • 홈
  • 블로그
  • 팟캐스트
  • 비디오
  • 문의
العربيةArabic
DeutschGerman
EnglishEnglish
فارسیPersian
한국어Korean
中文Chinese
패널•빠른 문의

Languages

Choose your interface locale

ar

العربية

Arabic

de

Deutsch

German

en

English

English

fa

فارسی

Persian

ko

한국어

Korean

zh

中文

Chinese

상담 예약

짧은 메시지를 남겨주세요 — 가능한 한 빠르게 답변드리겠습니다.

LinkedIn빠른 응답
홈/아티클/Palindrome이란? Two Pointers와 TypeScript로 팰린드롬 검사하기
Algorithms아티클

Palindrome이란? Two Pointers와 TypeScript로 팰린드롬 검사하기

Palindrome은 앞에서 읽어도 뒤에서 읽어도 같은 문자열이나 숫자입니다. Two Pointers를 이용한 O(n) 검사 방법과 TypeScript 구현, 정규화 및 면접 패턴을 설명합니다.

2026년 8월 19일6 분 읽기0 조회수
#Algorithms#Palindrome#Two Pointers#String Algorithms#TypeScript

Arian Soleimanzadeh

Software Engineer & Researcher

문자열 양 끝에서 중앙으로 이동하는 Two Pointers 기반 Palindrome 검사 시각화

Arian Soleimanzadeh

AI · 코드 · 제품

연구 + 엔지니어링
이 페이지에서
문자열을 뒤집는 방법Two Pointers 방법공백과 특수문자 무시하기숫자 PalindromeRecursionAlmost Palindrome관련 알고리즘 문제Two Pointers의 중요성대소문자기술 면접 문제Edge Cases정리

Palindrome은 앞에서 읽든 뒤에서 읽든 동일한 문자열, 숫자 또는 시퀀스를 의미합니다.

예:

racecar
level
madam
1221

반면:

hello
algorithm
1234

는 Palindrome이 아닙니다.

이 문제는 Two Pointers를 배우기에 매우 좋은 기본 문자열 문제입니다.

문자열을 뒤집는 방법

가장 간단한 해결 방법은 문자열을 Reverse한 뒤 원본과 비교하는 것입니다.

function isPalindrome(value: string): boolean {
  return value === value.split("").reverse().join("");
}

복잡도는:

Time: O(n)
Space: O(n)

입니다.

Two Pointers 방법

더 효율적인 방법은 양 끝에 Pointer를 두는 것입니다.

r a c e c a r
↑           ↑
L           R

두 문자가 같으면 가운데 방향으로 이동합니다.

function isPalindrome(value: string): boolean {
  let left = 0;
  let right = value.length - 1;

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

    left++;
    right--;
  }

  return true;
}

복잡도:

Time: O(n)
Space: O(1)

공백과 특수문자 무시하기

대표적인 예:

A man, a plan, a canal: Panama

소문자로 바꾸고 문자가 아닌 항목을 제거하면:

amanaplanacanalpanama

가 되어 Palindrome임을 확인할 수 있습니다.

추가 문자열을 만들지 않고 Pointer가 이동하면서 특수문자를 Skip할 수도 있습니다.

숫자 Palindrome

121
1221
4554

같은 숫자도 Palindrome입니다.

숫자를 String으로 변환하거나 수학적으로 자리수를 뒤집어 검사할 수 있습니다.

function isNumberPalindrome(value: number): boolean {
  if (value < 0) return false;

  const original = value;
  let reversed = 0;

  while (value > 0) {
    const digit = value % 10;
    reversed = reversed * 10 + digit;
    value = Math.floor(value / 10);
  }

  return original === reversed;
}

Recursion

양 끝 문자를 비교하고 내부 범위를 Recursive하게 검사할 수도 있습니다.

시간은 O(n)이지만 Call Stack 때문에 추가 공간은 O(n) 정도가 필요합니다.

따라서 일반적으로 반복문을 이용한 Two Pointers가 더 효율적입니다.

Almost Palindrome

자주 나오는 확장 문제는 다음과 같습니다.

최대 한 문자를 삭제하여 Palindrome을 만들 수 있는가?

첫 mismatch에서 왼쪽 문자 또는 오른쪽 문자를 하나 Skip한 뒤 남은 범위가 Palindrome인지 검사할 수 있습니다.

관련 알고리즘 문제

Palindrome 개념은 다음 문제의 기반이 됩니다.

  • Longest Palindromic Substring
  • Palindromic Subsequence
  • Palindrome Partitioning
  • Minimum Insertions
  • Valid Palindrome

Two Pointers의 중요성

Two Pointers는 다음 문제에서도 자주 사용됩니다.

  • Pair Sum
  • Remove Duplicates
  • Partitioning
  • Array Merge
  • Container With Most Water

따라서 Palindrome은 이 패턴을 익히는 좋은 시작점입니다.

대소문자

Level이 Palindrome인지 여부는 규칙에 따라 다릅니다.

Case-sensitive 비교에서는 L과 l이 다르지만 lowercase로 정규화하면 level이 됩니다.

기술 면접 문제

흔한 문제는 공백, 특수문자, 대소문자를 무시하고 Palindrome인지 검사하는 것입니다.

좋은 해결 방식은:

Two Pointers
Skip invalid characters
Case-insensitive comparison

이며:

Time: O(n)
Space: O(1)

을 달성할 수 있습니다.

Edge Cases

""        → true
"a"       → true
"aa"      → true
"ab"      → false
"racecar" → true

정리

Palindrome은 양방향에서 동일하게 읽히는 시퀀스입니다.

표준 알고리즘은 Two Pointers이며:

Time Complexity: O(n)
Space Complexity: O(1)

입니다.

이 문제는 단순하지만 대칭 비교, Two Pointers, 문자열 정규화, Edge Case 처리와 같은 중요한 알고리즘 사고방식을 익히는 데 매우 유용합니다.

이 페이지에서
문자열을 뒤집는 방법Two Pointers 방법공백과 특수문자 무시하기숫자 PalindromeRecursionAlmost Palindrome관련 알고리즘 문제Two Pointers의 중요성대소문자기술 면접 문제Edge Cases정리

아티클 정보

게시 정보, 읽기 시간 및 조회 데이터입니다.

게시일

2026년 8월 19일

업데이트

2026년 8월 19일

읽기 시간

6 분 읽기

조회수

0

작성자

Arian Soleimanzadeh

이전 아티클

Longest Common Substring이란? Dynamic Programming으로 가장 긴 공통 부분 문자열 찾기

다음 아티클

B2B CRM과 B2C CRM의 차이: 영업 프로세스부터 소프트웨어 아키텍처까지

깔끔하고 빠르며 아름다운 것을 함께 만들어 봅시다.

협업, 컨설팅, 제품 작업을 위한 빠른 문의입니다.

빠른 문의이메일 보내기
Arian Soleimanzadeh

현대적인 웹 엔지니어링, UI 시스템, 실용적인 AI 제품에 집중한 개인 포트폴리오 — 깨끗한 코드, 명확한 디자인.

빠른 링크

  • 소개
  • 블로그
  • 프로젝트
  • 문의

문의

  • info@ariansoleimanzadeh.site
  • soleimanzadeh.a.work@gmail.com

가능 시간: 평일

보통 다음 시간 내에 답변합니다 24시간.

뉴스레터

글, 프로젝트, 새 릴리스에 대한 업데이트를 받아보세요.

© 2026 ariansoleimanzadeh.site — 모든 권리 보유.

LinkedIn