한글 초성 분리

궁금했던 점이 해결되어 공유하고 싶어 글을 작성한다.

이미 존재하는 라이브러리가 굉장히 많겠지만,

한글 초성을 분리하는 원리가 궁금해서 생각해봤었는데

과거 아스키 코드를 이용해 대문자와 소문자를 오가던 방식과 역시 비슷하였다.

다만 한글은 유니코드를 사용하는 것의 차이였을 뿐이다.

AC 유니코드표

초성 + 중성 + 종성이 조합된 특정 글자의 유니코드 값 [1] 에서

시작 값인 ‘가’의 U+AC00를 빼준 값[2]을 초성 간의 거리 값인 (21 * 28)로 나눠준 몫[3]을 구해주면

해당하는 초성 값을 이끌어낼 수 있다.

예를 들어, 44160의 ‘검’을 살펴보면

(44160[1] — 44032)[2] / (21 * 28) = 0[3]…168

몫이 0으로 구해지기 때문에 ‘ㄱ’이라는 결과가 나온다.

이것을 바탕으로 아래의 소스를 통해서 구현해보았다.

https://github.com/yojkim/YKHangul

One clap, two clap, three clap, forty?

By clapping more or less, you can signal to us which stories really stand out.