코딩테스트를 준비하면서 아스키 코드를 알면 아이디어를 내는 데 더 쉬웠을 것같다.
근데 기억이 가물가물하여 한번 리마인드 차원에서 정리를 해보려한다.
1. 개념
1-1. 아스키코드(ASCII)
알고리즘 문제를 풀다 보면 문자('A', 'a', '0' 같은 것)를 숫자로 비교하거나, 반대로 숫자를 문자로 바꿔야 하는 경우가 자주 나온다.
이때 꼭 알아야 하는 게 아스키코드(ASCII)이다.
- ASCII는 문자를 컴퓨터가 이해할 수 있는 숫자로 매핑한 표준이다.
- 예를 들어
- 'A' -> 65
- 'Z' -> 90
- 'a' -> 97
- 'z' -> 122
- '0' -> 48
- '9' -> 57
즉, 문자도 결국 숫자로 다룰 수 있다는 뜻이다.
그래서 정렬, 대소문자 변환, 문자 범위 판별 같은 작업이 훨씬 쉬워진다.

1-2. ord()와 chr() 함수
파이썬에서는 아스키코드를 다루기 위해 ord()와 chr()를 사용한다.
- ord(문자): 문자를 숫자(코드값)로 변환
- chr(숫자): 숫자(코드값)를 문자로 변환
print(ord('A')) # 65
print(ord('a')) # 97
print(chr(65)) # A
print(chr(97)) # a
이 두함수만 잘 써도 문자열 관련 문제에서 구현 속도가 확 올라갈 수 있다.
2.예시
알고리즘 테스트에서 자주 나오는 형태의 예시가 있다.
2-1. 예시1: 대소문자를 소문자로 바꾸기
ch = 'D'
lower_ch = chr(ord(ch) + 32)
print(lower_ch) # d
- +32인 이유는 대소문자와 소문자의 차이는 항상 32이기 때문이다.
2-2. 예시2: 문자가 알파벳 소문자인지 판별하기
ch = 'g'
if ord('a') <= ord(ch) <= ord('z'):
print("소문자입니다.")
else:
print("소문자가 아닙니다.")
- 문자 비교를 코드값 비교로 바꾸면 조건이 명확해지고 실수가 줄어든다.
2-3. 예시3: 숫자 문자 '5'를 정수 5로 바꾸기
ch = '5'
num = ord(ch) - ord('0')
print(num) # 5
반대로 정수 5를 문자 '5'로도 만들 수 있다.
num = 5
ch = chr(num + ord('0'))
print(ch) # '5'
3.추가
파이썬에서 isalpha() 함수가 존재한다.
이는 오직 알파벳(문자)으로만 이루어져있는지를 확인해주는 함수이다.
# 1. 순수한 알파벳만 있는 경우
print("Apple".isalpha()) # True
print("abcde".isalpha()) # True
# 2. 숫자나 특수문자가 섞인 경우
print("Apple123".isalpha()) # False (숫자 '123'이 섞임)
print("hi!".isalpha()) # False (특수문자 '!'가 섞임)
# 3. 공백(띄어쓰기)이 섞인 경우 (많이 실수하는 부분!)
print("Hello World".isalpha()) # False (가운데 공백이 있어서 False입니다)
또한 isalpha() 외에도 문자열의 종류를 판별하는 함수들이 존재한다.
- isdigit(): 숫자로만 이루어져 있는가
- isalnum(): 알파벳 또는 숫자로만 이루어져 있는가
- isspace(): 오직 공백(띄어쓰기, 탭 등)으로만 이루어져 있는가
4.요약
- 문자도 컴퓨터에서 숫자로 처리된다.
- ASCII는 문자를 숫자로 대응시킨 표준이다.
- ord()는 문자 -> 숫자, chr()는 숫자 -> 문자 변환함수이다.
- 알고리즘 문제에서 다음 상황에 특히 유용하다.
- 대소문자 변환
- 문자 범위 판별(알파벳/숫자 여부 확인)
- 숫자 문자와 정수 간 변환
'IT 기초 > 알고리즘' 카테고리의 다른 글
| 파이썬 링크드리스트(연결 리스트) 이해하기 (0) | 2026.06.25 |
|---|---|
| 이해 안가서 ai에게 질문 (지울예정, 개인용) (0) | 2026.06.17 |