블로그 목록으로
텍스트 편집
2026년 5월 16일

한글 초성 추출 방법과 검색 최적화 활용

유니코드 기반 한글 초성 추출 원리를 설명하고, 초성 검색 기능 구현 방법과 SEO·UX 활용 전략을 안내합니다.

Q.한글 초성을 프로그래밍으로 추출하는 방법은 무엇인가요?

한글은 유니코드 44032(가)부터 55203(힣)까지 배치되어 있습니다. 초성 추출 공식은 (유니코드 코드포인트 - 44032) ÷ 588의 정수 부분입니다. Python에서는 `(ord(char) - 44032) // 588`로 초성 인덱스를 구하고, 초성 리스트 `['ㄱ', 'ㄲ', 'ㄴ', ...]`에서 해당 인덱스를 참조하면 됩니다.

한글 초성 추출초성 검색 구현한글 유니코드 초성

네이버 모바일 앱에서 "ㄱ"만 입력해도 "국밥", "강남역", "경복궁"이 자동완성으로 뜬다. 이 초성 검색이 작동하려면 각 단어의 초성을 미리 추출해 인덱싱해야 한다. 많은 개발자가 복잡하게 생각하지만, 유니코드 수식 하나로 해결된다.

한글 유니코드 구조

한글 완성형 문자는 유니코드 코드포인트 44032(가)부터 55203(힣)까지 11,172자가 연속 배치되어 있다. 각 문자는 다음 수식으로 분해된다.


코드포인트 = 44032 + (초성 인덱스 × 588) + (중성 인덱스 × 28) + 종성 인덱스

초성은 19개, 중성 21개, 종성 28개(받침 없음 포함)로 19 × 21 × 28 = 11,172자다.

초성 추출 코드

python
CHOSUNG = ['ㄱ','ㄲ','ㄴ','ㄷ','ㄸ','ㄹ','ㅁ','ㅂ','ㅃ',
           'ㅅ','ㅆ','ㅇ','ㅈ','ㅉ','ㅊ','ㅋ','ㅌ','ㅍ','ㅎ']

def get_chosung(char):
    code = ord(char)
    if 44032 <= code <= 55203:
        return CHOSUNG[(code - 44032) // 588]
    return char  # 한글이 아닌 경우 그대로 반환

def text_to_chosung(text):
    return ''.join(get_chosung(c) for c in text)

# 사용 예
print(text_to_chosung("서울특별시"))  # ㅅㅇㅌㅂㅅ
print(text_to_chosung("텍스터브"))    # ㅌㅅㅌㅂ

초성 검색 구현

python
def search_by_chosung(query, items):
    # query가 초성만으로 구성된 경우
    if all(c in 'ㄱㄲㄴㄷㄸㄹㅁㅂㅃㅅㅆㅇㅈㅉㅊㅋㅌㅍㅎ' for c in query):
        return [item for item in items
                if text_to_chosung(item).startswith(query)]
    # 일반 검색
    return [item for item in items if query in item]

실무 활용 사례

  • 자동완성: 검색창에 초성 입력 시 후보 목록 표시
  • 정렬: 가나다 순 정렬 시 초성 기준으로 그룹화
  • 색인(Index): 전화번호부 또는 사전 앱의 인덱스 탭 구성

---

이 글은 AI가 공개 자료를 기반으로 작성했습니다. 초성 추출은 완성형 한글(가-힣)에만 적용됩니다.

한글 텍스트 분석하기

바로 가기 →

관련 글

추가 참고 자료

다른 글 보기