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