본문 바로가기

Tips

한글 받침 여부 확인하기

728x90

한글은 단어의 마지막 글자의 받침 여부에 따라 이/가, 을/를 등의 조사가 달라진다.

이때 한글 글의 받침 여부를 확인해야 정확한 조사를 사용할 수 있다.

 

어떻게 하면 한글의 받침여부를 확인 할 수 있는지 알아보자.

 

유니코드에서는 한글 음절 11,172개의 문자 표현이 가능하다.

아래와 같은 범위를 갖는다.

0xAC00(44032) - 가 ~ 0xD7A3(55203) - 힣

한글은 초성 19개,(ㄱ, ㄴ, ㄷ..) 중성 21(ㅏ, ㅑ , ㅓ ...)개, 종성 28개(ㄱ, ㄴ, ㄷ, .. ㄹㅎ, ㄹㄱ ..)를 조합하여 만들어진다.

종성 28개를 기준으로 나열하면 아래와 같은 순서로 되어 있는데 종성이 없는 경우는 매 28번째에 위치하게 된다.

가각갂 ~ 갛 (28)
갸갹갺 ~ 걓 (28)
 ...
히힉힊 ~ 힣 (28)

 

각 한글의 문자는 유니코드의 순서대로 나열되어 있기 때문에 받침여부를 확인하고자 하는 문자의 유니코드에서 0xAC00(44032)를 빼면 한글 배열의 순서를 알 수 있게 된다.

이를 28로 나누게 되면 나머지가 0인 경우 받침이 없는 문자를 알아 낼 수 있다.

 

정리하면, (대상 문자의 유니코드 - 0xAC00) % 28 == 0 이면 받침이 없다라는 얘기다.

 

예를 들어 "김" 의 경우 0xAE40(44608) 인데 여기서 0xAC00(44032)를 빼면 576이다.

576을 28로 나누면 나머지가 16이 되기 때문에 "김" 은 받침이 있는 문자이다.

 

아래처럼 Python으로 간단하게 만들어 볼 수 있다.

def has_batchim(character: str) -> bool:
	return int((ord(character) - 0xAC00) % 28) == 0