백준에 있는 문제들을 풀면서 알파벳이나 숫자들을 유니코드로 변환해서 푸는 문제들이 많이 나왔습니다.
파이썬에는 유니코드와 관련된 문제들을 해결하기 위해
한 문자를 유니코드로 변환하는 ord 내장 함수와
유니코드를 한 문자로 변환하는 chr 내장 함수가 있습니다.
ord, chr 내장 함수는 사용법과 그 결과가 매우 간단하므로 정리해서 포스팅하고자 합니다.
밑의 링크들은 백준에 있는 문제들 중 ord, chr 함수를 사용해서 푼 문제들입니다.
제 블로그에 위의 네 문제말고도 chr, ord 함수를 활용해서 푼 문제들이 더 있으니
더 많은 풀이를 보시고 싶은 분은 블로그 내에서 ord나 chr로 검색해 둘러보시면 됩니다.
1. 유니코드
유니코드는 '전 세계의 모든 문자를 컴퓨터에서 일관되게 표현하고 다룰 수 있도록 설계된 산업 표준'입니다.
쉽게 표현하면 전 세계의 언어 및 여러 특수 기호들 한 글자 한 글자들을
각각 서로 다른 하나의 숫자로 연결시켜서 표현한 것입니다.
예를 들면, 유니코드에서 알파벳 대문자 A는 65, B는 66, 소문자 a는 97, b는 98이라는 숫자로 연결되어 있습니다.
그래서 맨 상단의 알고리즘 문제들과 같이 어떤 글자와 숫자를 관계지어야 할 때,
이 유니코드를 통해서 쉽게 해결할 수 있습니다.
그리고 우리나라에서는 자판을 보더라도 한글과 영어만 기본적으로 사용할 수 있지만,
일본어나 중국어 등 다른 나라의 언어를 사용하고 싶다거나, 자판에 없는 매우 특수한 기호들을 사용하고 싶다면
유니코드를 통해 다른 나라의 언어 및 자판에 없는 특수 기호들을 사용할 수 있습니다.
일단, 이번 포스팅은 파이썬의 ord 내장 함수를 중점으로 다루는 포스팅이므로 이 정도로만 정리하고
유니코드 자체에 대한 더 자세한 내용은 나중에 따로 포스팅해보겠습니다.
밑은 유니코드에 관한 위키백과 링크입니다.
2. ord 내장 함수
2-1. 사용법과 결과
ord 내장 함수의 사용법은 다음과 같습니다.
- ord('유니코드로 표현할 문자 1개')
코드를 실행시키면 매개변수에 넣은 문자 1개에 대한 유니코드 숫자를 반환합니다.
2-2. 공식 문서
밑의 링크는 파이썬 내장 함수들에 대한 파이썬 공식 문서 페이지입니다.
여기서 ord 내장 함수에 대한 공식 문서 내용을 찾을 수 있습니다.
2-3. 실행 결과
2-3-1. 숫자 형태의 문자 0 ~ 9를 유니코드로 변환
밑의 코드와 결과는 숫자 형태의 문자 0 ~ 9를 유니코드로 변환한 결과입니다.
# 숫자 형태의 문자 0 ~ 9를 각각 유니코드로 변환해봅니다.
print("숫자 형태의 문자 0을 유니코드로 변환:", ord('0'))
print("숫자 형태의 문자 1을 유니코드로 변환:", ord('1'))
print("숫자 형태의 문자 2를 유니코드로 변환:", ord('2'))
print("숫자 형태의 문자 3을 유니코드로 변환:", ord('3'))
print("숫자 형태의 문자 4를 유니코드로 변환:", ord('4'))
print("숫자 형태의 문자 5를 유니코드로 변환:", ord('5'))
print("숫자 형태의 문자 6을 유니코드로 변환:", ord('6'))
print("숫자 형태의 문자 7을 유니코드로 변환:", ord('7'))
print("숫자 형태의 문자 8을 유니코드로 변환:", ord('8'))
print("숫자 형태의 문자 9을 유니코드로 변환:", ord('9'))
숫자 형태의 문자 0 ~ 9를 ord 내장 함수에 넣으면, 10진법 숫자 48 ~ 57로 반환됩니다.
참고로 ord 내장 함수는 한 글자의 문자를 매개변수로 받으므로,
문자 0 ~ 9 대신 정수형(int) 숫자 0 ~ 9를 ord 내장 함수에 넣으면
정수형 데이터 대신 한 글자의 문자를 넣으라는 TypeError 오류가 발생합니다.
# 숫자 0을 유니코드로 변환해봅니다.
print("숫자 0을 유니코드로 변환:", ord(0))
2-3-2. 알파벳 대문자 A~Z를 유니코드로 변환
밑의 코드와 결과는 알파벳 대문자 A ~ Z를 유니코드로 변환한 것입니다.
# 알파벳 대문자 A ~ Z를 유니코드로 변환해봅니다.
print("알파벳 대문자 A를 유니코드로 변환:", ord('A'))
print("알파벳 대문자 B를 유니코드로 변환:", ord('B'))
print("알파벳 대문자 C를 유니코드로 변환:", ord('C'))
print("알파벳 대문자 D를 유니코드로 변환:", ord('D'))
print("알파벳 대문자 E를 유니코드로 변환:", ord('E'))
print("알파벳 대문자 F를 유니코드로 변환:", ord('F'))
print("알파벳 대문자 G를 유니코드로 변환:", ord('G'))
print("알파벳 대문자 H를 유니코드로 변환:", ord('H'))
print("알파벳 대문자 I를 유니코드로 변환:", ord('I'))
print("알파벳 대문자 J를 유니코드로 변환:", ord('J'))
print("알파벳 대문자 K를 유니코드로 변환:", ord('K'))
print("알파벳 대문자 L을 유니코드로 변환:", ord('L'))
print("알파벳 대문자 M을 유니코드로 변환:", ord('M'))
print("알파벳 대문자 N을 유니코드로 변환:", ord('N'))
print("알파벳 대문자 O를 유니코드로 변환:", ord('O'))
print("알파벳 대문자 P를 유니코드로 변환:", ord('P'))
print("알파벳 대문자 Q를 유니코드로 변환:", ord('Q'))
print("알파벳 대문자 R을 유니코드로 변환:", ord('R'))
print("알파벳 대문자 S를 유니코드로 변환:", ord('S'))
print("알파벳 대문자 T를 유니코드로 변환:", ord('T'))
print("알파벳 대문자 U를 유니코드로 변환:", ord('U'))
print("알파벳 대문자 V를 유니코드로 변환:", ord('V'))
print("알파벳 대문자 W를 유니코드로 변환:", ord('W'))
print("알파벳 대문자 X를 유니코드로 변환:", ord('X'))
print("알파벳 대문자 Y를 유니코드로 변환:", ord('Y'))
print("알파벳 대문자 Z를 유니코드로 변환:", ord('Z'))
알파벳 대문자 A ~ Z를 ord 내장 함수에 넣으면, 10진법 숫자 65 ~ 90으로 반환됩니다.
2-3-3. 알파벳 소문자 a ~ z를 유니코드로 변환
밑의 코드와 결과는 알파벳 소문자 a ~ z를 유니코드로 변환한 것입니다.
# 알파벳 소문자 a ~ z를 유니코드로 변환해봅니다.
print("알파벳 소문자 a를 유니코드로 변환:", ord('a'))
print("알파벳 소문자 b를 유니코드로 변환:", ord('b'))
print("알파벳 소문자 c를 유니코드로 변환:", ord('c'))
print("알파벳 소문자 d를 유니코드로 변환:", ord('d'))
print("알파벳 소문자 e를 유니코드로 변환:", ord('e'))
print("알파벳 소문자 f를 유니코드로 변환:", ord('f'))
print("알파벳 소문자 g를 유니코드로 변환:", ord('g'))
print("알파벳 소문자 h를 유니코드로 변환:", ord('h'))
print("알파벳 소문자 i를 유니코드로 변환:", ord('i'))
print("알파벳 소문자 j를 유니코드로 변환:", ord('j'))
print("알파벳 소문자 k를 유니코드로 변환:", ord('k'))
print("알파벳 소문자 l을 유니코드로 변환:", ord('l'))
print("알파벳 소문자 m을 유니코드로 변환:", ord('m'))
print("알파벳 소문자 n을 유니코드로 변환:", ord('n'))
print("알파벳 소문자 o를 유니코드로 변환:", ord('o'))
print("알파벳 소문자 p를 유니코드로 변환:", ord('p'))
print("알파벳 소문자 q를 유니코드로 변환:", ord('q'))
print("알파벳 소문자 r을 유니코드로 변환:", ord('r'))
print("알파벳 소문자 s를 유니코드로 변환:", ord('s'))
print("알파벳 소문자 t를 유니코드로 변환:", ord('t'))
print("알파벳 소문자 u를 유니코드로 변환:", ord('u'))
print("알파벳 소문자 v를 유니코드로 변환:", ord('v'))
print("알파벳 소문자 w를 유니코드로 변환:", ord('w'))
print("알파벳 소문자 x를 유니코드로 변환:", ord('x'))
print("알파벳 소문자 y를 유니코드로 변환:", ord('y'))
print("알파벳 소문자 z를 유니코드로 변환:", ord('z'))
알파벳 소문자 a ~ z를 ord 내장 함수에 넣으면, 10진법 숫자 97 ~ 122로 반환됩니다.
2-3-4. 기타 문자들을 유니코드로 변환
밑의 코드와 결과는 공백, 한글, 특수문자들을 유니코드로 변환한 것입니다.
# 기타 문자들을 유니코드로 변환해봅니다.
print("공백 ' '을 유니코드로 변환:", ord(' '))
print("--------------------------------------")
print("한글 '가'를 유니코드로 변환:", ord('가'))
print("한글 '나'를 유니코드로 변환:", ord('나'))
print("한글 '다'를 유니코드로 변환:", ord('다'))
print("한글 '라'를 유니코드로 변환:", ord('라'))
print("한글 '마'를 유니코드로 변환:", ord('마'))
print("한글 '빛'을 유니코드로 변환:", ord('빛'))
print("한글 '밤'을 유니코드로 변환:", ord('밤'))
print("한글 '하'를 유니코드로 변환:", ord('하'))
print("한글 '늘'을 유니코드로 변환:", ord('늘'))
print("한글 '블'을 유니코드로 변환:", ord('블'))
print("한글 '로'를 유니코드로 변환:", ord('로'))
print("한글 '그'을 유니코드로 변환:", ord('그'))
print("--------------------------------------")
print("특수문자 백틱 '`'을 유니코드로 변환:", ord('`'))
print("특수문자 물결표 '~'를 유니코드로 변환:", ord('~'))
print("특수문자 느낌표 '!'를 유니코드로 변환:", ord('!'))
print("특수문자 골뱅이 '@'를 유니코드로 변환:", ord('@'))
print("특수문자 샵 '#'을 유니코드로 변환:", ord('#'))
print("특수문자 달러 '$'를 유니코드로 변환:", ord('$'))
print("특수문자 퍼센트 '%'을 유니코드로 변환:", ord('%'))
2-3-5. ord 내장 함수의 매개변수에 여러 글자의 문자열을 넣은 경우
밑의 코드와 결과는 ord 내장 함수에 여러 글자의 문자열을 유니코드로 변환 시도해본 것입니다.
ord 내장 함수의 매개변수에는 한 글자의 문자만 들어갈 수 있으므로,
ord 내장 함수에는 한 글자의 문자만 넣으라는 TypeError 오류가 발생합니다.
# 한 글자가 아닌 여러 글자의 문자열을 유니코드로 변환 시도해봅니다.
print("여러 글자의 문자열을 유니코드로 변환 시도:", ord("abcd"))
댓글