문제
https://www.acmicpc.net/problem/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)
'BOJ > [BOJ] Python' 카테고리의 다른 글
백준 2908번 풀이 (0) | 2022.08.18 |
---|---|
백준 1152번 풀이 (0) | 2022.08.18 |
백준 11720번 풀이 (0) | 2022.08.18 |
백준 1065번 풀이 (0) | 2022.08.18 |
백준 15596번 풀이 (0) | 2022.08.18 |