한글 글자에 종성이 있는 지를 판단하기

초성, 중성, 종성

한글 글자는 자음과 모음으로 이루어집니다. 음절의 구성으로 보면 처음 소리인 초성, 중간 소리인 중성, 마지막 소리인 종성으로 이루어집니다.

중성은 모음과 같습니다. 중성에 위치하는 모음은 기본 모음자 10개와 복합 모음자 11개로 모두 21개입니다.

ㅏ ㅑ ㅓ ㅕ ㅗ ㅛ ㅜ ㅠ ㅡ ㅣ

ㅐ ㅒ ㅔ ㅖ ㅘ ㅙ ㅚ ㅝ ㅞ ㅟ ㅢ

초성과 종성에는 자음이 옵니다. 하지만 모든 자음을 초성과 종성에 쓸 수는 없습니다. 자음은 기본 자음자 14개와 복합 자음자 5개로 모두 19개입니다. 이 19개의 자음을 초성에 쓸 수 있습니다.

ㄱ ㄴ ㄷ ㄹ ㅁ ㅂ ㅅ ㅇ ㅈ ㅊ ㅋ ㅌ ㅍ ㅎ

ㄲ ㄸ ㅃ ㅆ ㅉ

그런데 받침인 종성에는 초성에 쓸 수 있는 다음 3개의 복합 자음을 쓸 수 없습니다.

ㄸ ㅃ ㅉ

대신 초성에는 쓸 수 없는 다음 11개의 복합 자음을 종성으로 쓸 수 있습니다.

ㄳ ㄵ ㄶ ㄺ ㄻ ㄼ ㄽ ㄾ ㄿ ㅀ ㅄ

그래서 종성에는 27개의 자음을 쓸 수 있습니다.

컴퓨터도 이 규칙에 맞춰 한글을 처리합니다. 예를 들어 ‘ㄳ’이 초성으로 오는 글자나 ‘ㄸ’가 종성으로 오는 글자를 입력할 수 없습니다.

종성과 조사

한글 글자는 크게 종성이 없을 때와 있을 때로 구분할 수 있습니다.

이 구성 차이에 따라 다음에 오는 조사가 달라집니다.

조사

초성 + 중성 + 종성

초성 + 중성

이, 가

쌀이

벼가

은, 는

쌀은

벼는

을, 를

쌀을

벼를

과, 와

쌀과

벼와

조사를 고려한 찾기/바꾸기

찾기/바꾸기를 할 때 단어의 마지막 글자의 구성이 바뀌면 조사까지 바꿔야 합니다. ‘벼’를 ‘쌀’로 또는 ‘쌀’을 ‘벼’로 바꾸려면 단어에 붙어오는 조사까지 바꿔야 합니다.

단순한 규칙이기에 마지막 글자의 구성에 종성이 있는 지를 판단하여 구현할 수 있습니다. 대부분의 프로그래밍 언어에서 글자를 표현하는 유니코드에는 일정한 패턴이 있습니다. 유니코드에서 한글 글자는 19개의 초성, 21개의 중성, 28개(27개의 종성에 종성이 없을 때를 더해 28개입니다)의 종성의 경우의 수 만큼 반복됩니다.

‘곑’과 같이 사용하지 않는 적지 않은 글자가 유니코드에 존재합니다. 사용 여부와 상관없이 초성, 중성, 종성 숫자 만큼 반복하여 표현했기 때문입니다. 이런 결정 때문에 프로그래밍으로 한글 글자에 종성이 있는 지를 쉽게 판단할 수 있습니다.

자바 코드로 보면 다음과 같습니다.

boolean hasFinalConsonant(char c) {
    int code = (int) (c - 0XAC00);
    return code % 28 != 0;
}