백준 한글 2

KIMYEONGJUN·2025년 3월 28일
post-thumbnail

문제

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

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

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

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

입력 처리: BufferedReader를 사용하여 한글 글자를 입력받는다.
유니코드 계산: 입력된 글자의 유니코드 값에서 '가'의 유니코드 값을 빼서 해당 글자의 인덱스를 계산한다.
초성, 중성, 종성 인덱스 계산: 각 글자의 초성, 중성, 종성 인덱스를 계산한다.
결과 계산: 전체 글자 수에 따라 몇 번째 글자인지를 계산한다.
출력: StringBuilder를 사용하여 결과를 출력한다.

코드로 구현

package baekjoon.baekjoon_27;

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

// 백준 11283번 문제
public class Main974 {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringBuilder sb = new StringBuilder();

        // 입력받는 글자
        String input = br.readLine();
        char ch = input.charAt(0);

        // 유니코드 값에서 '가'의 유니코드 값을 빼서 인덱스를 계산
        int unicode = ch - 0xAC00;

        // 초성, 중성, 종성의 개수
        int initialConsonantCount = 19;
        int medialVowelCount = 21;
        int finalConsonantCount = 28;

        // 초성과 중성의 인덱스 계산
        int initialConsonantIndex = unicode / (medialVowelCount * finalConsonantCount);
        int medialVowelIndex = (unicode % (medialVowelCount * finalConsonantCount)) / finalConsonantCount;
        int finalConsonantIndex = unicode % finalConsonantCount;

        // 몇 번째 글자인지 계산
        int index = (initialConsonantIndex * medialVowelCount * finalConsonantCount)
                + (medialVowelIndex * finalConsonantCount)
                + finalConsonantIndex + 1; // 1부터 시작하므로 +1

        // 결과 출력
        sb.append(index);
        System.out.println(sb.toString());
        br.close();
    }
}

마무리

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

profile
Junior backend developer

0개의 댓글