백준 10809번 풀이

문제

영어 소문자로 주어지는 단어에서 알파벳을 찾아서 있으면 그 알파벳의 위치를, 없으면 -1을 출력한다.

Reference

https://ooyoung.tistory.com/68

풀이

import sys
a=sys.stdin.readline().strip()

일단 역사와 전통의 sys.stdin.readline()을 써 보도록 하자. 뭔 역사와 전통이여

import sys
a=sys.stdin.readline().strip()
b=list("abcdefghijklmnopqrstuvwxyz")
# 이거 한번에 못만드나... 
b_find=[]
for i in range(len(b)):
    if a.find(b[i]):
        print(a.find(b[i]))
    else: 
        print(-1)

근데 이렇게 했더니 첫 글자를 계속 못찾는겨…

그래서 다른 분들은 어떻게 했나 찾다가 저기를 발견했는데, ASCII 코드로 푸셨더라니까요.

import sys
a=sys.stdin.readline().strip()
b=list(range(97,123))

일단 번호를 왜 저렇게 하느냐면 ASCII 코드에서 97번이 소문자 a이고 122번이 소문자 z다. 근데 122까지 잡으면 리스트 마지막이 121까지 옵니다. 왜냐… range()는 부터~미만이거든…

import sys
a=sys.stdin.readline()
b=list(range(97,123))
for i in range(len(b)):
    print(a.find(chr(b[i])))

if도 필요 없단다. find()는 원래 값이 없으면 -1을 반환하는 애거든… (index는 없으면 에러뜸)

import sys
a=sys.stdin.readline()
b_u=list(range(65,91))
b_l=list(range(97,123))
b=b_u+b_l
for i in range(len(b)):
    print(a.find(chr(b[i])))

자매품: 이건 대문자도 같이 찾아준다(65가 ASCII A)