아스키 코드와 파이썬 문자열 객체의 find 메소드를 사용하여 빠르고 가독성 높이기!
(문제 링크: https://www.acmicpc.net/problem/10809)
AS-IS
word = input()
alphabets = list("abcdefghijklmnopqrstuvwxyz")
result = [-1] * len(alphabets)
for i, s in enumerate(list(word)):
if s in alphabets:
idx = alphabets.index(s)
result[idx] = i
alphabets[idx] = None
print(" ".join(map(str, result)))
TO-BE
Background
아스키 코드
아스키 코드란 미국 국립 표준 협회에서 만든 정보교환용 부호체계로 대표적인 문자 인코딩 방식 중 하나입니다. 62개의 영숫자(숫자 + 영어 대문자 + 영어 소문자)에 대한 아스키코드는 다음과 같습니다.

파이썬에서 문자를 아스키코드로 변환할 때는 ord() 메소드를, 반대로 아스키코드를 문자로 변환할 때는 chr() 메소드를 사용하면 됩니다.
파이썬에서 문자열 내 특정 문자(열)의 위치를 찾는 메소드
- str.find(letters): str 객체 내에서 letters가 처음으로 등장하는 위치를 반환합니다. 만약 문자열 내 letters가 존재하지 않는 경우에는 -1을 반환합니다.
- str.index(letters): find 메소드와 동일한 기능을 하지만 문자열 내 letters가 존재하지 않는 경우 예외가 발생합니다.
개선된 코드
아스키코드 상에서 소문자는 97부터 122까지의 값을 가지고 있고, find 메소드를 이용하면 문제에서 원하는 출력을 별도의 후처리 과정 없이 만들어 낼 수 있습니다. 개선된 코드는 다음과 같습니다.
word = input()
for i in range(26):
print(word.find(chr(i + 97)), end=" ")
잘못된 내용, 오타, 부정확한 문장 등 어떤 피드백이든 환영합니다. 감사합니다.