[백준 11282] 한글 (C#, C++) - soo:bak
작성일 :
문제 링크
설명
N번째 한글 음절을 출력하는 문제입니다.
접근법
완성형 한글은 유니코드 U+AC00에서 시작해 총 11,172글자가 연속 배치되어 있습니다.
따라서 N번째 글자의 코드포인트는 0xAC00 + (N - 1)입니다.
C#에서는 char.ConvertFromUtf32를 사용하고, C++에서는 UTF-8 3바이트로 직접 변환합니다.
Code
C#
1
2
3
4
5
6
7
8
9
using System;
class Program {
static void Main() {
var n = int.Parse(Console.ReadLine()!);
var ch = char.ConvertFromUtf32(0xAC00 + (n - 1));
Console.WriteLine(ch);
}
}
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <bits/stdc++.h>
using namespace std;
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
int n; cin >> n;
int code = 0xAC00 + (n - 1);
char utf8[4];
utf8[0] = static_cast<char>(0xE0 | ((code >> 12) & 0x0F));
utf8[1] = static_cast<char>(0x80 | ((code >> 6) & 0x3F));
utf8[2] = static_cast<char>(0x80 | (code & 0x3F));
utf8[3] = '\0';
cout << utf8 << "\n";
return 0;
}