한글 초성 추출 · 자모 분해기
음절을 초·중·종성으로 쪼개고, 초성만 뽑아냅니다
안녕 → ㅇㄴ
입력한 글은 브라우저 밖으로 나가지 않습니다.
결과
한글은 ‘계산되는’ 문자다
한글을 자모로 쪼개는 일이 어려워 보이지만, 사실 한글은 세상에서 가장 분해하기 쉬운 문자 중 하나입니다. 이유는 유니코드가 완성형 한글을 아무렇게나 늘어놓지 않고 규칙적인 순서로 배열해 뒀기 때문입니다.
‘가’(U+AC00)를 시작으로, 초성 19개 × 중성 21개 × 종성 28개의 모든 조합이 빈틈없이 이어집니다. 그래서 음절 하나의 코드값만 알면 나눗셈과 나머지 연산으로 초·중·종성을 정확히 뽑아낼 수 있습니다.
음절코드 = 0xAC00 + (초성 × 21 + 중성) × 28 + 종성
"한"(U+D55C) 을 거꾸로 풀면:
0xD55C - 0xAC00 = 10588
종성 = 10588 % 28 = 4 → ㄴ
중성 = (10588 / 28) % 21 = 0 → ㅏ
초성 = 10588 / 588 = 18 → ㅎ
→ ㅎ + ㅏ + ㄴ사전도, 표 조회도, 형태소 분석도 필요 없습니다. 산술 세 번이면 끝입니다. 이 도구가 어떤 한글이든 즉시 분해하는 것도, 그 결과를 다시 완벽하게 조합해 되돌리는 것도 전부 이 규칙성 덕분입니다.
초성 추출은 검색을 위한 것이다
초성만 뽑는 기능이 장난처럼 보이지만, 실제로는 한국어 검색의 핵심 부품입니다. 연락처에서 “ㄱㅁㅅ”만 쳐도 “김민수”가 뜨는 그 편리함이 초성 매칭입니다. 이름 목록을 미리 초성 문자열로 바꿔 색인해 두면, 사용자가 자음만 입력해도 원하는 항목을 찾게 만들 수 있습니다.
같은 원리가 정렬에도 쓰입니다. 이름을 ㄱ·ㄴ·ㄷ 그룹으로 묶는 가나다순 인덱스(전화번호부 옆면의 자음 탭 같은 것)는 각 이름의 초성을 기준으로 만듭니다. 초성 퀴즈(“ㄴㄱ” → 너구리)나 게임의 힌트 표시도 같은 기능입니다.
이 도구는 한글이 아닌 문자 — 띄어쓰기, 영문, 숫자 — 는 그대로 통과시킵니다. 초성만 남기고 공백까지 지워 버리면 “ㄱㅁㅅㅇㅈㅎ”처럼 읽을 수 없는 덩어리가 되기 때문입니다. 띄어쓰기가 살아 있어야 “ㄱㅁㅅ ㅇㅈㅎ”으로 두 이름임을 알아볼 수 있습니다.
겹받침: 한 덩어리인가, 두 자모인가
분해에서 유일하게 ‘정답이 둘’인 지점이 겹받침과 이중모음입니다. “닭”의 받침 “ㄺ”은 어떻게 봐야 할까요?
닭 → ㄷ ㅏ ㄺ (겹받침을 한 덩어리로)
닭 → ㄷ ㅏ ㄹ ㄱ (낱개 자모로 완전 분해)둘 다 맞습니다. 관점이 다를 뿐입니다. ㄺ은 그 자체로 하나의 종성이지만 (그래서 종성 28개 목록에 들어 있습니다), 자판에서 그걸 입력하려면 ㄹ과 ㄱ을 따로 눌러야합니다. 이중모음 “ㅘ”도 마찬가지로 하나의 중성이면서 ㅗ와 ㅏ의 조합입니다.
그래서 ‘완전 분해’를 옵션으로 뒀습니다. 타이핑 순서를 재현하거나 낱개 자모 개수를 세야 할 때는 켜고, 종성 자체를 다룰때(예: 받침 유무로 조사 ‘은/는’을 고를 때)는 끕니다. 무엇을 하려는지에 따라 옳은 쪽이 갈립니다.
분해의 반대, 조합
같은 공식을 반대로 돌리면 자모를 다시 글자로 합칠 수 있습니다. “ㅎㅏㄴㄱㅡㄹ”을 “한글”로 되돌리는 것입니다. 다만 이건 단순히 세 개씩 묶는 게 아니라, 입력기(IME)와 같은 규칙을 따라야 합니다 — 받침 뒤에 모음이 오면 그 받침은 사실 다음 글자의 초성이고(“ㅁㅏㄴㅏ” → 마나), 낱개 ㄹ+ㄱ은 겹받침 ㄺ으로 합쳐야 합니다. 이 도구의 조합 기능은 그 규칙을 그대로 구현해, 분해한 것을 언제나 원래 글자로 되돌립니다.
정리하면
- 한글 분해는 사전이 아니라 산술입니다. 유니코드가 음절을 규칙적으로 배열해 둬서, 코드값 하나로 초·중·종성을 계산합니다.
- 초성 추출은 검색·정렬의 부품입니다. 초성 검색, 가나다 인덱스, 초성 퀴즈가 모두 이 기능 위에 있습니다.
- 겹받침은 목적에 따라 한 덩어리로도, 낱개로도 봅니다. 타이핑 재현엔 완전 분해, 종성 처리엔 덩어리 유지.
자주 묻는 질문
- 초성 추출은 어디에 쓰나요?
- 가장 흔한 건 초성 검색입니다. 연락처 앱에서 'ㄱㅁㅅ'만 쳐도 '김민수'가 걸리는 그 기능이 초성 매칭입니다. 목록을 미리 초성으로 바꿔 두면 그런 검색 색인을 만들 수 있습니다. 초성 퀴즈(ㄴㄱ → 너구리)나, 이름을 가나다(ㄱ·ㄴ·ㄷ…) 그룹으로 묶는 정렬에도 씁니다.
- '닭'을 분해하면 왜 'ㄷㅏㄺ'과 'ㄷㅏㄹㄱ' 두 결과가 있나요?
- 받침 'ㄺ'을 한 글자로 볼지, 'ㄹ'과 'ㄱ' 두 자모로 볼지의 차이입니다. 겹받침 ㄺ은 그 자체로 하나의 종성이지만, 자판에서는 ㄹ과 ㄱ을 따로 눌러 만듭니다. '겹자모 완전 분해'를 켜면 후자로, 끄면 전자로 나옵니다. 초성·종성 개수를 세거나 타이핑 순서를 재현할 때는 완전 분해가, 종성 자체를 다룰 때는 한 덩어리가 편합니다.
- 분해한 자모를 다시 글자로 합칠 수 있나요?
- 네, '자모 조합' 기능이 그 반대 작업입니다. 'ㅎㅏㄴㄱㅡㄹ'을 '한글'로 되돌립니다. 받침 뒤에 모음이 오면 받침을 다음 글자로 넘기고(ㅁㅏㄴㅏ → 마나), 낱개 자음을 겹받침으로, 모음 둘을 이중모음으로 합치는 규칙을 입력기와 똑같이 적용합니다.
- 한글은 사전 없이 어떻게 자동으로 분해되나요?
- 완성형 한글 음절이 유니코드에 규칙적으로 배열돼 있기 때문입니다. '가'(U+AC00)부터 시작해 초성 19 × 중성 21 × 종성 28 순서로 빈틈없이 채워져 있어서, 글자 코드에 나눗셈과 나머지 연산만 하면 초·중·종성을 정확히 계산할 수 있습니다. 그래서 어떤 한글이든 사전이나 표 없이 즉시 분해됩니다.
- 옛한글이나 자모가 흩어진 글자도 되나요?
- 현대 한글 완성형(가~힣)은 모두 처리합니다. 옛한글(ㆍ 아래아 등)이나 첫가끝 방식으로 조합된 문자는 이 도구의 대상이 아닙니다. 대부분의 문서는 완성형이라 실사용에서 문제가 되는 경우는 드뭅니다.
- 입력한 글이 서버로 전송되나요?
- 아닙니다. 모든 계산은 브라우저 안에서 끝나고, 입력한 글은 어디로도 전송되거나 저장되지 않습니다.