문제
한글의 각 글자는 초성, 중성, 종성으로 이루어져 있고, 이 세 가지를 모아써서 한 글자를 나타낸다.
초성은 ㄱ, ㄲ, ㄴ, ㄷ, ㄸ, ㄹ, ㅁ, ㅂ, ㅃ, ㅅ, ㅆ, ㅇ, ㅈ, ㅉ, ㅊ, ㅋ, ㅌ, ㅍ, ㅎ로 총 19개가 있고, 중성은 ㅏ, ㅐ, ㅑ, ㅒ, ㅓ, ㅔ, ㅕ ㅖ, ㅗ, ㅘ, ㅙ, ㅚ, ㅛ, ㅜ, ㅝ, ㅞ, ㅟ, ㅠ, ㅡ, ㅢ, ㅣ로 총 21개, 종성은 없음, ㄱ, ㄲ, ㄳ, ㄴ, ㄵ, ㄶ, ㄷ, ㄹ, ㄺ, ㄻ, ㄼ, ㄽ, ㄾ, ㄿ, ㅀ, ㅁ, ㅂ, ㅄ, ㅅ, ㅆ, ㅇ, ㅈ, ㅊ, ㅋ, ㅌ, ㅍ, ㅎ로 총 28개가 있다.
첫 번째 글자는 초성에서 ㄱ, 중성에서 ㅏ, 종성에서 없음을 합친 "가"가 되고, 두 번째 글자는 초성에서 ㄱ, 중성에서 ㅏ, 종성에서 ㄱ을 합친 "각"이 된다. 마지막 글자는 초성에서 ㅎ, 중성에서 ㅣ, 종성에서 ㅎ를 합친 "힣"이 된다.
초성과 중성, 그리고 종성을 합쳐서 만들 수 있는 글자의 개수는 총 19*21*28 = 11,172개가 된다.
한글이 주어졌을 때, 몇 번째 글자인지 구하는 프로그램을 작성하시오.
입력
첫째 줄에 글자 하나가 주어진다. 주어지는 글자는 UTF-8로 인코딩 되어 있는 한글이며, 문제 설명에 나온 방법으로 만들 수 있다.
출력
입력으로 주어진 글자가 몇 번째인지 출력한다.
예제 입력 1가 |
예제 출력 11 |
예제 입력 2힣 |
예제 출력 211172 |
예제 입력 3백 |
예제 출력 34146 |
예제 입력 4준 |
예제 출력 47425 |
Python 풀이
문자를 유니코드로 변환시켜주는 ord 함수만 알고 있다면 쉽게 풀 수 있는 문제이다.
파이썬에서 ord('가') 로 가의 시작 지점을 찾으면 44032가 나오기 때문에
예제와 같이 가를 1로 순서를 맞춰주기 위해 44031을 빼주자.
print(ord(input())-44031)
Java 풀이
char 형으로 입력을 받은 뒤 숫자를 빼 유니코드 형식으로 출력한다.
import java.io.*;
import java.util.*;
public class Main {
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader (new InputStreamReader(System.in));
System.out.println(br.readLine().charAt(0)-44031);
}
}
'알고리즘 연습 > 기초 (입출력 등)' 카테고리의 다른 글
[🥉1 / 백준 1252 / 파이썬] 이진수 덧셈 (0) | 2021.07.19 |
---|---|
[🥉4 / 백준 5893 / 파이썬] 17배 (0) | 2021.07.17 |
[🥉5 / 백준 15727 / 파이썬] 조별과제를 하려는데 조장이 사라졌다 (0) | 2021.07.17 |
[🥉5 / 백준 2338 / 파이썬] 긴자리 계산 (0) | 2021.07.15 |
[🥉1 / 백준 1654 / 파이썬] 아무래도이문제는A번난이도인것같다 (0) | 2021.07.14 |