텍스트 반전기: 문자 즉시 뒤집기 및 반전
텍스트 반전 도구는 최대 만 자까지 문자열을 글자 단위로 즉시 뒤집는다. 이모지와 악센트 부호, 여러 언어의 문자 체계를 그대로 유지하며 순서만 반대로 바꾼다. 회문 확인이나 거꾸로 된 텍스트를 만들 때 쓸 수 있는 무료 온라인 도구다.
텍스트 반전 도구
아래에 텍스트를 입력하거나 붙여넣어 문자 순서를 즉시 뒤집으세요. 입력하는 동안 실시간으로 결과를 확인할 수 있습니다.
문서화
텍스트 반전기란 무엇인가?
텍스트 반전기는 텍스트 조각에 있는 문자의 순서를 뒤집는 도구입니다. "hello"를 입력하면 "olleh"가 됩니다. 마지막 문자부터 첫 문자까지 모든 입력 문자를 역순으로 작성하여 작동합니다. 사람들은 이를 사용해 거꾸로 된 텍스트를 만들거나, 단어가 회문인지 확인하거나, 프로그래밍에서 문자열 반전이 작동하는 방식을 학습합니다.
텍스트 반전기 사용 방법
- 입력 상자에 텍스트를 입력하거나 붙여 넣습니다.
- 입력을 멈추면 반전된 텍스트가 아래에 바로 나타납니다. 버튼을 누를 필요가 없습니다.
- 복사 버튼을 눌러 결과를 복사합니다.
재설정 버튼을 누르면 입력과 결과가 모두 지워집니다. 이 도구는 최대 10,000자까지 허용합니다. 더 긴 입력을 넣으면 텍스트를 줄이라는 오류 메시지가 표시됩니다. 개수는 화면에 보이는 문자를 기준으로 하므로, 컴퓨터가 하나의 이모지를 여러 조각으로 저장하더라도 이모지 하나는 문자 하나로 계산됩니다.
텍스트 반전 공식
문으로 이루어진 길이 n의 문자열에서 반전된 문자열은 다음과 같습니다.
쉽게 말해 마지막 문자가 첫 번째 문자가 되고, 뒤에서 두 번째 문자가 두 번째 문자가 되는 식으로 첫 번째 문자가 마지막 문자가 될 때까지 이어집니다.
알고리즘의 단계별 작동 방식
- 빈 결과로 시작합니다.
- 입력의 마지막 문자를 가져와 결과에 추가합니다.
- 뒤에서 두 번째 문자를 가져와 추가합니다.
- 모든 문자가 역순으로 추가될 때까지 반복합니다.
대부분의 반전 도구는 개별 컴퓨터 문자를 대상으로 작동합니다. 반면 이 도구는 반전하기 전에 각 이모지, 국기, 악센트가 붙은 문자를 하나의 단위로 묶습니다. 이를 문자소 클러스터 분할이라고 합니다. 아래 절에서는 이것이 중요한 이유를 설명합니다.
풀이 예시
입력: Hello, World!
반전 결과: !dlroW ,olleH
쉼표, 공백, 느낌표를 포함한 모든 문자는 본래의 정체성을 유지합니다. 바뀌는 것은 순서뿐입니다.
이모지, 악센트 및 기타 유니코드 문자 처리
컴퓨터는 이모지나 악센트가 붙은 문자처럼 화면에 보이는 하나의 문자를 코드 포인트라는 여러 개의 작은 단위로 저장하는 경우가 많습니다. 어떤 단위들이 함께 속하는지 고려하지 않고 이러한 단위를 하나씩 뒤집는 반전 방식은 문자를 분리할 수 있습니다.
예를 들어 "Hello 👍"에는 숨겨진 두 단위로 구성된 엄지손가락 위로 이모지가 들어 있습니다. 기본적인 단위별 반전은 이 쌍을 분리해 이모지 대신 깨진 기호를 만들 수 있습니다. 이 도구는 각 이모지, 국기, 악센트가 붙은 문자를 하나의 단위로 취급하여 이 문제를 피하므로 "Hello 👍"는 올바르게 "👍 olleH"가 됩니다. 국가 코드를 나타내는 두 개의 숨겨진 기호로 구성된 국기 이모지도 그대로 유지됩니다. 따라서 "🇺🇸 USA"는 국기가 분리되지 않고 "ASU 🇺🇸"로 반전됩니다.
일반적인 활용
- 회문 확인: 회문은 "racecar"처럼 앞에서 읽으나 뒤에서 읽으나 같은 단어입니다. 단어와 그 반전 결과를 비교하면 회문인지 확인할 수 있습니다.
- 코딩 학습: 문자열 반전은 반복문, 배열, 스택을 연습하는 일반적인 과제입니다.
- 단어 게임과 퍼즐: 퍼즐과 방 탈출 게임에서는 메시지를 숨기기 위해 반전된 단어를 사용합니다.
- 디자인 효과: 일부 디자이너는 거울상 로고나 시각 효과를 만들기 위해 텍스트를 반전합니다.
- 디버깅: 정방향 텍스트와 반전된 텍스트를 비교하면 특정 데이터 오류를 발견하는 데 도움이 될 수 있습니다.
문자 반전과 단어 반전
이 두 작업은 자주 혼동됩니다.
- 문자 반전(이 도구가 수행하는 작업): 모든 문자를 뒤집습니다. "Hello World"는 "dlroW olleH"가 됩니다.
- 단어 반전: 각 단어는 그대로 유지하고 단어의 순서만 바꿉니다. "Hello World"는 "World Hello"가 됩니다.
간략한 역사
반전된 글쓰기와 거울 글쓰기는 컴퓨터보다 수천 년 앞서 등장했습니다. 일부 고대 그리스 비문에는 부스트로페돈이라는 방식이 사용되었습니다. 이 방식에서는 밭을 가는 황소의 움직임처럼 줄의 방향이 왼쪽에서 오른쪽, 다시 오른쪽에서 왼쪽으로 번갈아 바뀝니다. 레오나르도 다 빈치는 노트의 상당 부분을 거울 문자로 썼으며, 이는 거울에 비춰야만 읽을 수 있습니다. 역사가들은 그가 비밀을 지키기 위해서였는지, 왼손잡이 작가로서 편했기 때문인지, 아니면 잉크가 번지는 것을 막기 위해서였는지를 두고 여전히 의견이 나뉩니다.
컴퓨팅에서 문자열 반전은 컴퓨터 과학 초기부터 표준적인 프로그래밍 연습 과제였습니다. 문자를 스택에 넣었다가 꺼내면 순서가 자동으로 뒤집히므로, 스택과 배열의 작동 방식을 가르치는 데 자주 사용됩니다.
코드에서 텍스트를 반전하는 방법
대부분의 프로그래밍 언어에는 문자열을 반전하는 내장 기능이나 간단한 방법이 있습니다.
1text = "Hello, World!"
2print(text[::-1]) # !dlroW ,olleH
31const text = "Hello, World!";
2console.log([...text].reverse().join('')); // !dlroW ,olleH
3두 예제 모두 일반적인 문자와 숫자, 그리고 🌍처럼 단일 단위로 이루어진 이모지의 텍스트를 올바르게 반전합니다. 그러나 일부 국기 이모지, 별도의 악센트 기호를 사용해 입력한 악센트 문자, 특수 연결 문자로 결합된 가족 이모지처럼 여러 숨겨진 단위로 이루어진 문자는 여전히 분리할 수 있습니다. 이 도구에서 사용하는 완전한 문자소 클러스터 보존 반전에는 전용 함수가 필요하며, JavaScript에서는 Intl.Segmenter와 같은 함수를 사용합니다.
성능
텍스트 반전에는 선형 시간이 걸립니다. 알고리즘이 각 문자를 정확히 한 번씩 확인하므로 입력을 두 배로 늘리면 작업량도 대략 두 배가 됩니다. 한 단어부터 여러 페이지에 이르는 일반적인 텍스트에서는 결과가 사실상 즉시 나타납니다. 메가바이트 단위 이상의 매우 큰 파일은 한 번에 모두 메모리에 불러오는 대신 데이터를 스트리밍하는 전문 프로그램으로 처리하는 편이 낫습니다.
자주 묻는 질문
온라인에서 텍스트를 반전하려면 어떻게 하나요?
위의 상자에 텍스트를 붙여 넣거나 입력합니다. 입력을 멈추면 반전된 텍스트가 자동으로 나타납니다. 복사 버튼을 사용해 결과를 복사합니다.
텍스트 길이에 제한이 있나요?
예. 이 도구는 최대 10,000자까지 허용합니다. 더 긴 입력을 넣으면 결과 대신 오류 메시지가 표시됩니다. 문자는 화면에 보이는 형태로 세므로 이모지나 악센트가 붙은 문자는 두 문자가 아니라 하나로 계산됩니다.
이 도구는 단어를 반전하나요, 아니면 문자만 반전하나요?
단어의 순서가 아니라 개별 문자를 반전합니다. "Hello World"는 "dlroW olleH"가 되며, "World Hello"가 되지는 않습니다.
이모지와 영어가 아닌 텍스트도 처리할 수 있나요?
예. 이 도구는 이모지, 국기, 악센트가 붙은 문자를 하나의 단위로 취급하므로 반전한 뒤에도 분리되지 않습니다. 중국어, 아랍어, 키릴 문자 등 모든 문자 체계에서도 작동합니다.
텍스트를 두 번 반전하면 원래 상태로 돌아가나요?
예. 반전된 문자열을 다시 반전하면 원래 텍스트가 복원됩니다. 이 성질을 대합이라고 합니다.
반전된 텍스트가 암호화에 유용한가요?
아니요. 문자를 반전하는 것은 안전한 방법이 아닙니다. 텍스트를 시각적으로 숨길 뿐이며, 누구나 다시 반전해 읽을 수 있습니다.
참고 문헌
- Unicode Consortium. Unicode Standard Annex #29: Unicode Text Segmentation.
- Cormen, T. H., Leiserson, C. E., Rivest, R. L., & Stein, C. (2009). Introduction to Algorithms (3판). MIT Press.
- MDN Web Docs. Intl.Segmenter. Mozilla Developer Network.