백준 11283번 - 한글 2

백준 11283번 문제 링크
문제 이름 : 한글 2
주 언어 : Python
태그 : 구현
solved.ac 등급 : Bronze IV (2023/05/05 확인)


문제 보기

문제 :

한글의 각 글자는 초성, 중성, 종성으로 이루어져 있고, 이 세 가지를 모아써서 한 글자를 나타낸다.
초성은 ㄱ, ㄲ, ㄴ, ㄷ, ㄸ, ㄹ, ㅁ, ㅂ, ㅃ, ㅅ, ㅆ, ㅇ, ㅈ, ㅉ, ㅊ, ㅋ, ㅌ, ㅍ, ㅎ로 총 19개가 있고, 중성은 ㅏ, ㅐ, ㅑ, ㅒ, ㅓ, ㅔ, ㅕ ㅖ, ㅗ, ㅘ, ㅙ, ㅚ, ㅛ, ㅜ, ㅝ, ㅞ, ㅟ, ㅠ, ㅡ, ㅢ, ㅣ로 총 21개, 종성은 없음, ㄱ, ㄲ, ㄳ, ㄴ, ㄵ, ㄶ, ㄷ, ㄹ, ㄺ, ㄻ, ㄼ, ㄽ, ㄾ, ㄿ, ㅀ, ㅁ, ㅂ, ㅄ, ㅅ, ㅆ, ㅇ, ㅈ, ㅊ, ㅋ, ㅌ, ㅍ, ㅎ로 총 28개가 있다.
첫 번째 글자는 초성에서 ㄱ, 중성에서 ㅏ, 종성에서 없음을 합친 "가"가 되고, 두 번째 글자는 초성에서 ㄱ, 중성에서 ㅏ, 종성에서 ㄱ을 합친 "각"이 된다. 마지막 글자는 초성에서 ㅎ, 중성에서 ㅣ, 종성에서 ㅎ를 합친 "힣"이 된다.
초성과 중성, 그리고 종성을 합쳐서 만들 수 있는 글자의 개수는 총 19*21*28 = 11,172개가 된다.
한글이 주어졌을 때, 몇 번째 글자인지 구하는 프로그램을 작성하시오.

입력 :

첫째 줄에 글자 하나가 주어진다. 주어지는 글자는 UTF-8로 인코딩 되어 있는 한글이며, 문제 설명에 나온 방법으로 만들 수 있다.

출력 :

입력으로 주어진 글자가 몇 번째인지 출력한다.



파이썬에는 파이썬 ord 함수 가 있는데, 이는 유니코드 문자가 몇번째에 있는지 해당 정수값을 return 하는 함수입니다. 예를 들어, "가"는 유니코드로 44032번째에 있습니다. 따라서 ord("가") == 44032 입니다.
따라서 ord 함수를 씌운 값에 44031을 빼주면 ord("가") - 44031 == 1가 되는 것 처럼, 풀 수 있습니다.

이 문제를 풀었다면 백준 11282번 - 한글 도 비슷하게 풀 수 있습니다.
뜬금없는 이야기로 북한에서는 초성, 중성, 종성 모두 한국과 순서가 달라서 이렇게는 풀지 못한다고 합니다.


-번째 푼 문제 (2022/--/--)