프로그래머스의 코딩테스트 입문 문제 중 하나로 외계행성의 나이를 푸는 문제이다.
나이를 입력하면 그 나이의 숫자가 영어 소문자 알파벳 순서에 매칭되는 알파벳을 출력해주는 문제이다.
나처럼 이미 알파벳 순서를 알고있는 사람들은 아래처럼 일일이 알파벳을 순서대로 나열하여,
그 인덱스를 통해 답을 구할 수 있다.
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/
표를 참고해보면 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'
'Programming > python' 카테고리의 다른 글
파이썬 Python 코드 실행 시간 계산하는 법 | time.time() (0) | 2023.01.31 |
---|---|
파이썬(Python) : OrderedDict와 Dict의 차이 (0) | 2023.01.30 |
How to reshape numpy array (ndarray) - 넘파이 어레이 크기 변경하는 방법 2가지 (2) | 2023.01.02 |
파이썬 원하는대로 리스트 정렬하기 Python sort(), sorted() (0) | 2022.12.24 |
[프로그래머스] 파이썬 Python 점의 위치 구하기 | List Tuple Boolean Indexing (0) | 2022.12.24 |