BaekJoon 11285번: 초성 중성 종성 2 (Python)

SSW·2022년 7월 20일
0

BOJ

목록 보기
10/12

1. Problem


2. Solution

import sys

start = 'ㄱㄲㄴㄷㄸㄹㅁㅂㅃㅅㅆㅇㅈㅉㅊㅋㅌㅍㅎ'
mid = 'ㅏㅐㅑㅒㅓㅔㅕㅖㅗㅘㅙㅚㅛㅜㅝㅞㅟㅠㅡㅢㅣ'
end = ' ㄱㄲㄳㄴㄵㄶㄷㄹㄺㄻㄼㄽㄾㄿㅀㅁㅂㅄㅅㅆㅇㅈㅊㅋㅌㅍㅎ'
plus = [start, mid, end]
lst = list(sys.stdin.readline().strip() for i in range(3))
enc = list(plus[i].index(lst[i]) for i in range(3))
value = ((enc[0] * 21) + enc[1]) * 28 + (enc[2]) + 0xAC00
print(chr(value))

3. Detail

세계 각국의 언어를 한 방식으로 표현하기 위해 유니코드(Unicode)라는 인코딩(Encoding) 방식을 사용한다.
초성 집합인 start와 중성 집합인 mid와 종성 집합인 end에서 각각 입력으로 받는 문자들의 index들을 구해 enc list에 넣는다.
마지막으로 환산 공식인 ((enc[0] * 21) + enc[1]) * 28 + (enc[2]) + 0xAC00를 이용하여 유니코드 값을 계산하고, chr() 함수에 value를 대입하여 유니코드 값에 해당하는 문자로 변환하여 출력한다.

profile
ssw

0개의 댓글