
[Unrated] 한글 - 11282
11282번: 한글
한글의 각 글자는 초성, 중성, 종성으로 이루어져 있고, 이 세 가지를 모아써서 한 글자를 나타낸다. 초성은 ㄱ, ㄲ, ㄴ, ㄷ, ㄸ, ㄹ, ㅁ, ㅂ, ㅃ, ㅅ, ㅆ, ㅇ, ㅈ, ㅉ, ㅊ, ㅋ, ㅌ, ㅍ, ㅎ로 총 19개가 있
www.acmicpc.net
성능 요약
메모리: 14284 KB, 시간: 124 ms
분류
구현
문제 설명
한글의 각 글자는 초성, 중성, 종성으로 이루어져 있고, 이 세 가지를 모아써서 한 글자를 나타낸다.
초성은 ㄱ, ㄲ, ㄴ, ㄷ, ㄸ, ㄹ, ㅁ, ㅂ, ㅃ, ㅅ, ㅆ, ㅇ, ㅈ, ㅉ, ㅊ, ㅋ, ㅌ, ㅍ, ㅎ로 총 19개가 있고, 중성은 ㅏ, ㅐ, ㅑ, ㅒ, ㅓ, ㅔ, ㅕ ㅖ, ㅗ, ㅘ, ㅙ, ㅚ, ㅛ, ㅜ, ㅝ, ㅞ, ㅟ, ㅠ, ㅡ, ㅢ, ㅣ로 총 21개, 종성은 없음, ㄱ, ㄲ, ㄳ, ㄴ, ㄵ, ㄶ, ㄷ, ㄹ, ㄺ, ㄻ, ㄼ, ㄽ, ㄾ, ㄿ, ㅀ, ㅁ, ㅂ, ㅄ, ㅅ, ㅆ, ㅇ, ㅈ, ㅊ, ㅋ, ㅌ, ㅍ, ㅎ로 총 28개가 있다.
첫 번째 글자는 초성에서 ㄱ, 중성에서 ㅏ, 종성에서 없음을 합친 "가"가 되고, 두 번째 글자는 초성에서 ㄱ, 중성에서 ㅏ, 종성에서 ㄱ을 합친 "각"이 된다. 마지막 글자는 초성에서 ㅎ, 중성에서 ㅣ, 종성에서 ㅎ를 합친 "힣"이 된다.
초성과 중성, 그리고 종성을 합쳐서 만들 수 있는 글자의 개수는 총 19*21*28 = 11,172개가 된다.
입력으로 N이 주어졌을 때, N번째 글자를 구하는 프로그램을 작성하시오.
입력
첫째 줄에 N(1 ≤ N ≤ 11,172)이 주어진다.
출력
첫째 줄에 N번째 글자를 출력한다. 문자열의 인코딩은 UTF-8을 사용해야 한다.
답 : Index에서 -1을 하여 인덱스를 맞춰주고 유니코드에 맞게 하여 해당 문자를 구해준다.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.parseInt(br.readLine());
int CHO = 19;
int JUNG = 21;
int JONG = 28;
int charIndex = N - 1; // 인덱스는 0부터 시작하므로 N에서 1을 뺌
int jong = charIndex % JONG; // 종성 구하기
charIndex /= JONG;
int jung = charIndex % JUNG; // 중성 구하기
charIndex /= JUNG;
int cho = charIndex; // 초성 구하기
char c = (char) ('가' + cho * 21 * 28 + jung * 28 + jong);
System.out.println(c);
}
}
'algorithm > 백준' 카테고리의 다른 글
[백준] 파일 옮기기 - 11943 Java[자바] (0) | 2023.03.19 |
---|---|
[백준] 1998년생인 내가 태국에서는 2541년생?! - 18108 Java[자바] (0) | 2023.03.18 |
[백준] 나는 누구인가 - 15733 Java[자바] (0) | 2023.03.16 |
[백준] 서버 - 10409 Java[자바] (0) | 2023.03.15 |
백준 FBI - 2857 Java[자바] (0) | 2023.03.14 |