Baekjoon 문제 풀기 (11283번 : 한글 2)Python

11283번 : 한글 2

1. 문제읽기


또! 출력문제!

급상승 난이도에 당황..;;
리스트를 써야되나 반복문을 써야되나 헤매다가 또 결국 구글링..

2. 제출 코드


역시나 편한 함수가 있었다.
chr함수는 대충 알고 있었는데, ord함수는 생전 처음 들어봄.
chr함수의 반대가 ord함수이다.

ord()함수 : 문자 -> 유니코드 변환
chr()함수 : 유니코드 -> 문자 변환

print(ord('가')) # 44032 출력
print(chr(0xAC00)) # 가 출력

따라서 이 문제에서는 ord함수를 써서 한글 유니코드로 변환해주면 된다.

아스키코드 : 영어를 출력할 수 있게 만든 최초의 문자 코드 체계 유니코드 : 전 세계 언어를 표현할 수 있게 만든 문자 코드 체계

아스키코드에서 전 세계 언어를 인코딩하기 위해 유니코드가 만들어진 것이다.
한글 유니코드0xAC00 또는 44032로 쓸 수 있다.
두 코드의 차이점이 뭐지 하고 찾아보니까, 0xAC00은 16진수이고, 44032는 10진수라고 한다.
또한, 표기할 때 U+를 붙여 U+AC00 , 0x를 붙여 0xAC00 또는 그냥 AC00으로 표기할 수 있다.
chr함수는 0x를 붙여줘야 인식한다.
따라서, 문제에서는 가 1번으로 출력되었으므로, 기존 44032코드에서 44031을 빼주면 완성!

a = ord(input())
print(a-44031)

3. 공부할 것


그동안 유니코드는 들어보기만 하고 자세히 보지는 않았었는데, 이번 기회에 정리를 조금 할 수 있었다.
UTF-8 인코딩도 많이 들어봐서 생소하지는 않았지만, 아스키코드유니코드의 개념을 정리하면서 이해가 조금씩 되었다.
일단은 단순하게 UTF-8 인코딩이 가장 많이 쓰이는 인코딩이라는 정도만 정리해두자.

ps- 블로그에 개념 정리를 자세하게 하지는 않을 계획이다. 검색하면 나보다 훨씬 정리 잘하시는 분들의 글도 많고 일일히 정리하다보면 배보다 배꼽이 더 커질 수 있기 때문에.. 필요할 때 다시 검색해서 익히는걸로!

댓글남기기