초성 추출기: 초성이 자동 계산되는 원리

초성 추출기는 입력한 한글 문장을 한 글자씩 유니코드 코드값으로 분석해, 각 글자의 첫 자음만 자동으로 뽑아내는 도구입니다.
초성 퀴즈 문제를 만들거나 한글 검색 인덱스용 키를 준비하는 사람이 겪는 문제, 즉 긴 문장을 한 글자씩 손으로 짚어가며 초성을 세다가 실수하는 문제를 줄여줍니다.
이 글은 그 계산이 정확히 어떤 원리로 이루어지는지, 그리고 옵션에 따라 결과가 어떻게 달라지는지를 사실 위주로 정리합니다.
요약 ① 초성은 완성형 한글 코드값(44032~55203)에서 44032를 뺀 값을 588로 나눈 몫으로 정해집니다. ② 공백 유지·한글 외 문자 유지·쌍자음 단순화·구분자 네 옵션이 결과 형태를 각각 다르게 바꿉니다. ③ 쌍자음을 그대로 둘지 단순화할지, 띄어쓰기를 남길지가 초성 퀴즈 정답과 어절 구분 보존 여부를 좌우합니다.
초성을 손으로 세다 보면 틀리는 이유
초성 퀴즈를 준비할 때 흔히 쓰는 방식은 정답 단어를 보면서 첫 자음을 하나씩 손으로 옮겨 적는 것입니다.
짧은 단어는 문제가 없지만, 다섯 글자가 넘어가거나 쌍자음(ㄲ, ㄸ, ㅃ, ㅆ, ㅉ)이 섞여 있으면 한두 글자를 빠뜨리거나 잘못 옮기는 일이 자주 생깁니다.
예를 들어 '깜짝 놀랐다'처럼 첫 글자부터 쌍자음인 단어는 초성을 ㄲ 그대로 낼지, ㄱ으로 단순화해 낼지부터 정해야 합니다. 이 기준을 정하지 않은 채 문제를 여러 개 내면 문제마다 정답 표기 방식이 달라지는 결과로 이어집니다.
한글 검색 인덱스 키를 만드는 상황도 비슷합니다. 여러 건의 데이터에 초성 컬럼을 채우다 보면, 사람이 손으로 처리한 값과 실제 유니코드 계산값이 어긋나는 경우가 생깁니다.
도구 없이 초성을 직접 계산하는 방법
한글 초성은 유니코드 표준에 정해진 계산식으로 나옵니다. 아래 순서대로 하면 도구 없이도 직접 구할 수 있습니다.
현대 한글 완성형 음절은 유니코드에서 U+AC00부터 U+D7A3까지, 10진수로는 44032부터 55203까지의 코드값을 씁니다. '가'가 44032, '힣'이 55203입니다.
이 범위 안의 글자라면 다음 세 단계로 초성을 구합니다.
- 글자의 코드값에서 44032를 뺍니다.
- 그 값을 588로 나눈 몫을 구합니다. 588은 중성 21개와 종성 28개를 곱한 값(21×28)으로, 초성 하나마다 이만큼의 코드 조합이 배정돼 있기 때문입니다.
- 그 몫을 아래 19개 초성 목록에서 순서대로 찾습니다(0번부터 시작).
| 몫 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 초성 | ㄱ | ㄲ | ㄴ | ㄷ | ㄸ | ㄹ | ㅁ | ㅂ | ㅃ | ㅅ | ㅆ | ㅇ | ㅈ | ㅉ | ㅊ | ㅋ | ㅌ | ㅍ | ㅎ |
실제 단어로 확인해 보면 이렇습니다. '방탄소년단'의 각 글자를 이 순서대로 계산하면 다음과 같습니다.
| 글자 | 코드값 | 44032을 뺀 값 | 588로 나눈 몫 | 초성 |
|---|---|---|---|---|
| 방 | 48169 | 4137 | 7 | ㅂ |
| 탄 | 53444 | 9412 | 16 | ㅌ |
| 소 | 49548 | 5516 | 9 | ㅅ |
| 년 | 45380 | 1348 | 2 | ㄴ |
| 단 | 45800 | 1768 | 3 | ㄷ |
다섯 글자를 순서대로 이으면 'ㅂㅌㅅㄴㄷ'가 나옵니다. 프로그래밍 콘솔에서 문자 하나의 코드값(자바스크립트라면 charCodeAt)을 확인할 수 있으면 어떤 글자든 같은 방식으로 손으로 구할 수 있습니다.
이 범위(44032~55203) 밖의 문자, 즉 영문자·숫자·기호·옛한글 자모는 이 계산식 자체가 적용되지 않습니다. 그래서 별도로 유지할지 지울지를 정해야 합니다.
손으로 계산하면 위와 같이 나오지만, 문장이 길어질수록 한 글자씩 코드값을 찾는 작업이 오래 걸립니다. 저희 도구로 확인하기.
입력 즉시 브라우저에서 계산되며 서버로 전송되지 않습니다. 설치나 회원가입 없이 바로 씁니다.

옵션에 따라 결과가 달라지는 지점
네 가지 옵션은 서로 다른 부분을 바꿉니다. 그중 쌍자음 단순화와 공백 유지는 초성 퀴즈를 낼 때 결과가 크게 갈리는 지점이라 헷갈리기 쉽습니다.
쌍자음을 그대로 둘지 단순화할지
기본값은 쌍자음을 그대로 냅니다. '깜짝'의 첫 글자는 ㄲ으로 나옵니다. '쌍자음 단순화' 옵션을 켜면 ㄲ→ㄱ, ㄸ→ㄷ, ㅃ→ㅂ, ㅆ→ㅅ, ㅉ→ㅈ로 바뀌어 ㄱ으로 나옵니다.
이 차이는 문제를 더 쉽게 만들지 더 어렵게 만들지의 문제입니다.
쌍자음을 그대로 두면 후보 글자가 좁혀져 문제가 쉬워지고, 단순화하면 ㄱ으로 시작하는 글자 후보가 늘어나 문제가 어려워집니다.
어느 쪽이 맞다기보다는 출제 의도에 따라 달라지는 부분입니다.
띄어쓰기를 남길지 지울지
'공백 유지'를 끄면 띄어쓰기가 통째로 사라져 여러 어절의 초성이 이어붙습니다. 결과만 보고는 원래 몇 어절이었는지 알 수 없게 됩니다.
'공백 유지'를 켜면 띄어쓰기 자리가 그대로 남아 어절 구분이 보존됩니다. 구분자는 이 공백이나 줄바꿈이 아닌, 같은 어절 안에서 이어지는 초성들 사이에만 끼어듭니다.
옵션별로 무엇이 바뀌는지 정리하면 아래와 같습니다.
| 옵션 | 무엇을 바꾸는가 |
|---|---|
| 공백 유지 | 원래 띄어쓰기·줄바꿈을 결과에 남길지 여부 |
| 한글 외 문자 유지 | 영문·숫자·기호를 삭제할지 그대로 둘지 |
| 쌍자음 단순화 | ㄲㄸㅃㅆㅉ를 ㄱㄷㅂㅅㅈ로 바꿀지 여부 |
| 구분자 | 초성 사이에 넣을 문자(없음/공백/마침표/직접 입력) |
정리
- 초성은 완성형 한글 코드값(44032~55203)에서 44032를 뺀 뒤 588로 나눈 몫으로 정해지는, 정해진 계산식의 결과입니다.
- 588은 중성 21개와 종성 28개를 곱한 값이고, 그 몫이 19개 초성 목록의 순번이 됩니다.
- 쌍자음을 그대로 둘지 단순화할지는 정답이 정해진 문제가 아니라 초성 퀴즈 난이도를 좌우하는 선택입니다.
- 띄어쓰기를 지우면 원래 어절 구분이 사라지므로, 어절을 살리려면 '공백 유지'를 켜야 합니다.
- 완성형 한글 범위 밖의 문자(영문·숫자·기호·옛한글 자모)는 계산식이 적용되지 않아 별도 옵션으로만 유지 여부가 정해집니다.
입력 즉시 브라우저에서 계산되며 서버로 전송되지 않습니다. 설치나 회원가입 없이 바로 씁니다.
자주 묻는 질문
쌍자음(ㄲ, ㅃ 등)으로 시작하는 글자는 초성이 뭐가 되나요?
기본값에서는 쌍자음이 그대로 초성이 됩니다. 예를 들어 '까'는 ㄲ, '빠'는 ㅃ으로 나옵니다. '쌍자음 단순화' 옵션을 켜면 ㄲ→ㄱ, ㄸ→ㄷ, ㅃ→ㅂ, ㅆ→ㅅ, ㅉ→ㅈ로 바뀌어 나옵니다.
영어나 숫자가 섞인 문장도 초성으로 바꿀 수 있나요?
바꿀 수 있습니다. 한글 완성형 글자는 계산식대로 초성으로 바뀌고, 영문·숫자·기호처럼 한글이 아닌 문자는 '한글 외 문자 유지' 옵션에 따라 그대로 남거나(켜짐) 삭제됩니다(꺼짐).
띄어쓰기를 없애면 어절 구분을 알아볼 수 없게 되나요?
'공백 유지'를 끄면 그렇게 됩니다. 여러 어절의 초성이 공백 없이 이어붙어서 결과만 보고는 원래 몇 어절이었는지 알 수 없습니다. 원래 어절 구분을 남기려면 '공백 유지'를 켜야 합니다.
옛한글 자모나 조합 중인 문자도 초성이 추출되나요?
추출되지 않습니다. 계산식은 U+AC00~U+D7A3 범위의 완성형 한글 음절에만 적용됩니다.
이 범위 밖의 옛한글 자모나 조합 중인 문자는 한글이 아닌 문자로 취급되어 '한글 외 문자 유지' 옵션에 따라 남거나 삭제됩니다.
