본문 바로가기
BOJ/[BOJ] Python

백준 10809번 풀이

by Lv. 35 라이츄 2022. 8. 18.

문제

https://www.acmicpc.net/problem/10809

 

10809번: 알파벳 찾기

각각의 알파벳에 대해서, a가 처음 등장하는 위치, b가 처음 등장하는 위치, ... z가 처음 등장하는 위치를 공백으로 구분해서 출력한다. 만약, 어떤 알파벳이 단어에 포함되어 있지 않다면 -1을 출

www.acmicpc.net

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

 

Reference

https://ooyoung.tistory.com/68

 

백준 10809번 [파이썬] 알파벳 찾기 : Python find( ) 함수 활용

[Python] 백준 알고리즘 온라인 저지 10809번 : 알파벳 찾기 Python3 코드 word = input() alphabet = list(range(97,123)) # 아스키코드 숫자 범위 for x in alphabet : print(word.find(chr(x))) Python3 코..

ooyoung.tistory.com

 

풀이

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

최근댓글

최근글

skin by © 2024 ttutta