회문(Palindrome)은 앞에서 읽으나 뒤에서 읽으나 같은 문자열을 의미합니다. 예를 들어 "Level", "Madam", "Racecar" 같은 단어가 대표적인 예입니다. 이번 글에서는 C#을 사용하여 특정 문자열이 회문인지 판별하는 방법을 알아보겠습니다.
1. 문자열 준비하기
먼저 회문 여부를 확인할 문자열을 준비합니다.
str = "Level";
2. 문자열을 문자 배열로 변환
각 문자를 개별적으로 다루기 위해 ToCharArray() 메서드를 사용해 문자열을 문자 배열로 변환합니다.
char[] ch = str.ToCharArray();
3. 배열 뒤집기
Array.Reverse() 메서드를 사용하면 문자 배열의 순서를 손쉽게 반전시킬 수 있습니다.
Array.Reverse(ch);
반전된 배열은 다시 new string() 생성자를 통해 문자열로 변환할 수 있습니다.
rev = new string(ch);
4. 원본과 비교하기
마지막으로 Equals() 메서드를 사용하여 원본 문자열과 뒤집은 문자열이 동일한지 비교합니다. 이때 StringComparison.OrdinalIgnoreCase 옵션을 지정하면 대소문자 차이를 무시하고 비교할 수 있어, "Level"처럼 첫 글자만 대문자인 경우에도 정확하게 판별됩니다.
bool res = str.Equals(rev, StringComparison.OrdinalIgnoreCase);
전체 예제 코드
지금까지 설명한 내용을 모두 포함한 완성된 코드는 다음과 같습니다.
using System;
namespace Demo {
class Program {
static void Main(string[] args) {
string str, rev;
str = "Level";
char[] ch = str.ToCharArray();
Array.Reverse(ch);
rev = new string(ch);
bool res = str.Equals(rev, StringComparison.OrdinalIgnoreCase);
if (res == true) {
Console.WriteLine("String " + str + " is a Palindrome!");
} else {
Console.WriteLine("String " + str + " is not a Palindrome!");
}
Console.Read();
}
}
}실행 결과
위 코드를 실행하면 다음과 같은 결과가 출력됩니다.
String Level is a Palindrome!
마무리
이처럼 C#에서는 ToCharArray(), Array.Reverse(), Equals() 세 가지만 활용하면 별도의 복잡한 로직 없이 간단히 회문 여부를 확인할 수 있습니다. 대소문자 구분이 필요한 경우에는 StringComparison 옵션을 조정하면 되므로, 상황에 맞게 유연하게 적용해 보시기 바랍니다.