2018 C Chapter 7 (Week 13)

From: 2018-03-03 00:00:00 To: 2018-06-25 23:59:59 Now: 2024-05-04 12:44:39 Status: Public

B - 연습 7.2 ASCII 코드가 아닌 문자는 HEX로 봅시다.

Time Limit: 1s Memory Limit: 128MB

Submissions: 397 Solved: 175
Description

이번 문제에서는 입력으로 들어온 문장에 대해 ASCII 코드에 포함된 문자에 대해서는 그대로 출력을 하고, 그렇지 않은 문자에 대해서는 HEX로 출력하는 도전을 해봅시다!

ASCII 코드는 255개의 글자를 표현할 수 있지요? 그렇다면 ASCII 코드로 표현하지 못하는 글자는 무엇일까요? 엄청 많습니다만 그중 예를 들자면 한글이 있습니다.

한글은 바로 세종대왕님께서 만드신 세계에서 가장 고도화된 문자입니다. 한글의 특징은 자음과 모음을 조합하여 하나의 글자를 만드는 것입니다. 현대 한글은 낱자를 엮어 11,172(첫소리 19 × 가운뎃소리 21 × (끝소리 27 + 끝소리 없음 1)개의 글자를 가지고 있습니다. 옛 한글까지 포함하면 훨씬 많아지겠죠? 한글을 ASCII 코드로 표현하는 것은 불가능한 일입니다. 코끼리를 스마트폰에 집어넣는 격이죠. ASCII보다 더 많은 글자를 담을 수 있는 코드 값이 필요합니다. 한글의 경우 국제 표준인 유니코드(UTF-8)이라는 방식으로 컴퓨터 상에서 표현을 합니다.

WithCS 서버의 경우 한글 한 글자를 표현하기 위해 3바이트의 유니코드값을 부여합니다. 이를 HEX로 나타내면 6자리 값이 됩니다. 무조건 3바이트냐? 그렇지 않습니다. ASCII 코드에 포함되는 문자는 그대로 1바이트를 사용하며, 아랍 언어는 2바이트 등등 서로 조금 다릅니다.

HEX는 무엇일까요? 바로 16진수를 뜻합니다. 컴퓨터 세상에서 16진수는 의외로 굉장히 많은 곳에서 활용됩니다. 예를 들면 WiFi의 MAC address는 "00-0A-E6-90-9C-AF"같은 형식인데, 48bit의 고유 주소값을 HEX로 2개씩 묶어서 표현한 것입니다. "0000 0000 0000 1010 1110 0110 1001 0000 1001 1100 1010 1111" 처럼 2진수로 표현하는 것 보다 훨씬 의사 전달이 쉽겠죠?

자, 본 문제에서 입력으로는 여러줄의 문장이 들어옵니다. 각각의 글자를 검사하여 ASCII 코드에 포함되는 문자는 그대로 출력을 하고, 그렇지 않은 문자에 대해서는 HEX로 출력을 해봅시다. (HEX로 출력하는 양식은 Hint를 참고하세요!)

Input

- Line 1 ~ EOF : 입력 문장

Output

- Line 1 ~ EOF : non-ASCII 문자들에 대해 HEX로 변환된 문장

Sample Input
:ASCII:
:한글:
Aber es passierte wirklich.
Но это произошло в действительности.
Pero eso sucedió realmente. 
لكن دلك حدث فعلا.
그런데 그것이 실제로 일어났습니다.
Sample Output
:ASCII:
:ED 95 9C EA B8 80 :
Aber es passierte wirklich.
D0 9D D0 BE  D1 8D D1 82 D0 BE  D0 BF D1 80 D0 BE D0 B8 D0 B7 D0 BE D1 88 D0 BB D0 BE  D0 B2  D0 B4 D0 B5 D0 B9 D1 81 D1 82 D0 B2 D0 B8 D1 82 D0 B5 D0 BB D1 8C D0 BD D0 BE D1 81 D1 82 D0 B8 .
Pero eso sucediC3 B3  realmente. 
D9 84 D9 83 D9 86  D8 AF D9 84 D9 83  D8 AD D8 AF D8 AB  D9 81 D8 B9 D9 84 D8 A7 .
EA B7 B8 EB 9F B0 EB 8D B0  EA B7 B8 EA B2 83 EC 9D B4  EC 8B A4 EC A0 9C EB A1 9C  EC 9D BC EC 96 B4 EB 82 AC EC 8A B5 EB 8B 88 EB 8B A4 .
Hint

- 본 문제에서 printf 함수를 이용해서 HEX로 출력하는 양식은 "%02X "을 이용하면 됩니다. (마지막 공백까지 사용하세요~)

- 한글의 한 글자는 24bit로 표현되므로 getchar() 함수의 return값을 담는 변수는 int 형으로 선언되어야 합니다.