백준 한글

KIMYEONGJUN·2025년 4월 9일
0
post-thumbnail

문제

내가 생각했을때 문제에서 원하는부분

첫째 줄에 N(1 ≤ N ≤ 11,172)이 주어진다.

첫째 줄에 N번째 글자를 출력한다.
문자열의 인코딩은 UTF-8을 사용해야 한다.

내가 이 문제를 보고 생각해본 부분

입력 처리: BufferedReader를 사용하여 입력을 받는다.
초성, 중성, 종성 배열: 한글의 초성, 중성, 종성을 배열로 정의해준다.
인덱스 계산: N-1로 인덱스를 조정한 후, 초성, 중성, 종성의 인덱스를 계산해준다.
한글 글자 생성: 유니코드 값(0xAC00)을 이용해 한글 글자를 생성해준다.
결과 출력: 생성된 한글 글자를 출력한다.

코드로 구현

package baekjoon.baekjoon_27;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

// 백준 11282번 문제
public class Main986 {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int N = Integer.parseInt(br.readLine());

        // 초성, 중성, 종성 배열 정의
        char[] 초성 = { 'ㄱ', 'ㄲ', 'ㄴ', 'ㄷ', 'ㄸ', 'ㄹ', 'ㅁ', 'ㅂ', 'ㅃ', 'ㅅ', 'ㅆ', 'ㅇ',
                'ㅈ', 'ㅉ', 'ㅊ', 'ㅋ', 'ㅌ', 'ㅍ', 'ㅎ' };
        char[] 중성 = { 'ㅏ', 'ㅐ', 'ㅑ', 'ㅒ', 'ㅓ', 'ㅔ', 'ㅕ', 'ㅖ', 'ㅗ', 'ㅘ', 'ㅙ',
                'ㅚ', 'ㅛ', 'ㅜ', 'ㅝ', 'ㅞ', 'ㅟ', 'ㅠ', 'ㅡ', 'ㅢ', 'ㅣ' };
        char[] 종성 = { '\0', 'ㄱ', 'ㄲ', 'ㄳ', 'ㄴ', 'ㄵ', 'ㄶ', 'ㄷ', 'ㄹ', 'ㄺ',
                'ㄻ', 'ㄼ', 'ㄽ', 'ㄾ', 'ㄿ', 'ㅀ', 'ㅁ', 'ㅂ', 'ㅄ', 'ㅅ',
                'ㅆ', 'ㅇ', 'ㅈ', 'ㅊ', 'ㅋ', 'ㅌ', 'ㅍ', 'ㅎ' };

        // N-1로 인덱스 조정
        N--;

        // 초성, 중성, 종성 인덱스 계산
        int 초성인덱스 = N / (21 * 28);
        int 중성인덱스 = (N % (21 * 28)) / 28;
        int 종성인덱스 = N % 28;

        // 한글 글자 생성
        char 한글글자 = (char) (0xAC00 + (초성인덱스 * 588) + (중성인덱스 * 28) + 종성인덱스);

        // 결과 출력
        System.out.println(한글글자);
        br.close();
    }
}

마무리

코드와 설명이 부족할수 있습니다. 코드를 보시고 문제가 있거나 코드 개선이 필요한 부분이 있다면 댓글로 말해주시면 감사한 마음으로 참고해 코드를 수정 하겠습니다.

profile
Junior backend developer

0개의 댓글