Programming/python

파이썬 string 문자를 ascii code 아스키 코드로 변환하는 방법 (feat. 프로그래머스 외계행성의 나이 구하기)

방황하는 데이터불도저 2023. 1. 24. 14:50

프로그래머스의 코딩테스트 입문 문제 중 하나로 외계행성의 나이를 푸는 문제이다.

나이를 입력하면 그 나이의 숫자가 영어 소문자 알파벳 순서에 매칭되는 알파벳을 출력해주는 문제이다.

 

나처럼 이미 알파벳 순서를 알고있는 사람들은 아래처럼 일일이 알파벳을 순서대로 나열하여,

그 인덱스를 통해 답을 구할 수 있다.

def solution(age):
    english = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'w', 'x', 'y', 'z']
    
    return ''.join([english[int(s)] for s in str(age)])

하지만, 모든 알파벳을 외우지 못할 수도 있고, 모든 알파벳을 저렇게 일일이 나열해주는 것은 매우 귀찮다.

이 때 사용할 수 있는 함수는 chr()이다.

 

이 함수는 숫자를 넣으면 그에 해당되는 ascii code의 부호를 출력해주는 기능을 가진다.


 ascii code가 무엇인가? (위키백과 👉 https://ko.wikipedia.org/wiki/ASCII)

 

미국 정보교환표준부호(American Standard Code for Information Interchange), 또는 줄여서 ASCII( /ˈæski/, 아스키)는 영문 알파벳을 사용하는 대표적인 문자 인코딩이다.

 

쉽게 말하면 컴퓨터가 영어 문자를 알아들을 수 있도록 이진법 수에 문자 하나하나를 매핑한 것이다.

 

이를 인코딩이라고 하며, ascii는 7비트 인코딩으로 52개의 영문 알파벳 대소문자와, 10개의 숫자, 32개의 특수 문자, 그리고 하나의 공백 문자를 표현할 수 있다.


ascii code 표는 여기에서 볼 수 있다. https://www.ascii-code.com/

 

ASCII Code - The extended ASCII table

The following ASCII table with hex, octal, html, binary and decimal chart conversion contains both the ASCII control characters, ASCII printable characters and the extended ASCII character set Windows-1252.

www.ascii-code.com


표를 참고해보면 97부터 122까지 소문자 a~z를 표현할 수 있다.

 

이 점을 활용하면 아래처럼 코드를 짤 수 있게 된다. 

(문제에서는 a=0, ascii code는 a=97이기 때문에 age 수에 97을 더해주면 된다.)

def solution(age):
	return ''.join[chr(int(s)+97) for s in str(age)]

 


추가로 ord()함수도 알고 넘어가자.

 

숫자를 넣어서 문자를 출력해주는게 chr()함수라면

그 반대가 ord()함수이다.

 

ord('a')라고 하면 97을 출력해주는 것이다. (참 쉽죵?)

 

ord('a')   #output : 97

chr(97)    #output : 'a'