코딩 테스트/백준

백준 - [단계별로 풀어보기 심화 1] 10988 팰린드롬인지 확인하기

devrabbit22 2026. 3. 15. 05:09

이번 문제를 보자마자 두 가지 해결 방법이 떠올랐다.
첫 번째는 문자열의 앞과 뒤 문자를 순차적으로 비교하는 방법이고, 두 번째는 Reverse 메서드를 사용해 문자열을 뒤집은 후 원본 문자열과 비교하는 방법이었다.
팰린드롬의 특징은 문자열을 뒤집어도 동일한 문자열이 된다는 점이기 때문에, Reverse를 활용한 방법이 가장 직관적인 해결 방법이라고 생각했다.

//백준 10988 팰린드롬인지 확인하기
//Reverse를 사용한 방법
string inputData = Console.ReadLine();
char[] copyArr = inputData.ToCharArray();
Array.Reverse(copyArr);
string reverseData = new string(copyArr);

//문장 데이터 비교 후 값 출력
if (inputData == reverseData)
{
    Console.Write(1);
}
else
    Console.Write(0);

//앞과 뒤를 비교하는 방법
/*
string input = Console.ReadLine();
bool isPalindrome = true;

// 문자열의 절반까지만 반복하면서 앞 문자와 뒤 문자를 비교
for (int i = 0; i < input.Length / 2; i++)
{
    // 앞에서 i번째 문자와 뒤에서 i번째 문자가 다르면
    if (input[i] != input[input.Length - 1 - i])
    {
        // 팰린드롬이 아니므로 false로 변경
        isPalindrome = false;

        // 더 이상 확인할 필요 없으므로 반복문 종료
        break;
    }
}

// 팰린드롬이면 1, 아니면 0 출력
Console.WriteLine(isPalindrome ? 1 : 0);
*/

출력 결과 1
출력 결과 2

참고로 알아둘 것

투 포인터(Two Pointer)란?

두 개의 인덱스(포인터)를 사용하여 데이터를 탐색하거나 비교하는 알고리즘 기법이다.

보통 왼쪽 포인터 (left), 오른쪽 포인터 (right) 이렇게 양쪽에서 시작하거나 같은 방향으로 이동하면서 문제를 해결한다.

input[i]
input[input.Length - 1 - i]
문자열 앞 문자 vs 문자열 뒤 문자를 비교하는 방식이며, 이는 투 포인터 알고리즘 패턴의 가장 기본적인 형태라고 볼 수 있다.
 

처음에는 Reverse 메서드를 이용해 문자열을 뒤집은 뒤 원본 문자열과 비교하는 방식으로 문제를 해결했다. 이후 반복문을 사용해 문자열의 앞과 뒤 문자를 직접 비교하는 방법으로도 구현해 보았고, 이 과정에서 해당 방식이 투 포인터(Two Pointer) 알고리즘 패턴의 기본적인 형태라는 것을 새롭게 이해하게 되었다.