[JAVA] 백준 11283번 : 한글 2

안녕하세요, 해을입니다🦖

이번 글에서는 백준 11283번 : 한글 2 문제에 대해 알아보겠습니다!

💡 문제

image

한글의 각 글자는 초성, 중성, 종성으로 이루어져 있고, 이 세 가지를 모아써서 한 글자를 나타낸다.

초성은 ㄱ, ㄲ, ㄴ, ㄷ, ㄸ, ㄹ, ㅁ, ㅂ, ㅃ, ㅅ, ㅆ, ㅇ, ㅈ, ㅉ, ㅊ, ㅋ, ㅌ, ㅍ, ㅎ로 총 19개가 있고, 중성은 ㅏ, ㅐ, ㅑ, ㅒ, ㅓ, ㅔ, ㅕ ㅖ, ㅗ, ㅘ, ㅙ, ㅚ, ㅛ, ㅜ, ㅝ, ㅞ, ㅟ, ㅠ, ㅡ, ㅢ, ㅣ로 총 21개, 종성은 없음, ㄱ, ㄲ, ㄳ, ㄴ, ㄵ, ㄶ, ㄷ, ㄹ, ㄺ, ㄻ, ㄼ, ㄽ, ㄾ, ㄿ, ㅀ, ㅁ, ㅂ, ㅄ, ㅅ, ㅆ, ㅇ, ㅈ, ㅊ, ㅋ, ㅌ, ㅍ, ㅎ로 총 28개가 있다.

첫 번째 글자는 초성에서 ㄱ, 중성에서 ㅏ, 종성에서 없음을 합친 “가”가 되고, 두 번째 글자는 초성에서 ㄱ, 중성에서 ㅏ, 종성에서 ㄱ을 합친 “각”이 된다. 마지막 글자는 초성에서 ㅎ, 중성에서 ㅣ, 종성에서 ㅎ를 합친 “힣”이 된다.

초성과 중성, 그리고 종성을 합쳐서 만들 수 있는 글자의 개수는 총 192128 = 11,172개가 된다.

한글이 주어졌을 때, 몇 번째 글자인지 구하는 프로그램을 작성하시오.

💡 입력

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

💡 출력

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

💡 예제 입력 1

💡 예제 출력 1

1

💡 예제 입력 2

💡 예제 출력 2

11172

🚩 문제 풀이

char형 문자로 입력받은 후, 아스키코드(int형)로 변환시킵니다.

그리고 첫 글자인 ‘가’의 아스키코드(44031) 값을 빼면 해당 글자의 아스키코드를 구할 수 있습니다.

  • char형 문자로 받기 : Scanner로는 char형을 입력받을 수 없기 때문에 charAt(index) 사용
  • 아스키코드 구하기 : char형을 int형으로 변환

🚩 소스 코드

import java.util.Scanner;

public class Main {
 public static void main(String[] args) {  
  Scanner stdIn = new Scanner(System.in);
  
  char x = stdIn.next().charAt(0);
  int result = ((int) x) - 44031;
  
  stdIn.close();
  
  System.out.println(result);
 }
}

오류 및 오타 지적, 질문, 인사 등 무엇이든 언제나 환영입니다!

읽어주셔서 감사합니다.

끝!🦕


© 2022. Haeeul All rights reserved.

🐾해을의 개발자국🐾

Powered by Hydejack v9.1.5