본문 바로가기
Algorithm/baekjoon

[백준] 10809번 알파벳 찾기 파이썬 (python)

by eoieiie 2024. 3. 11.

문제 

알파벳 소문자로만 이루어진 단어 S가 주어진다. 각각의 알파벳에 대해서, 단어에 포함되어 있는 경우에는 처음 등장하는 위치를, 포함되어 있지 않은 경우에는 -1을 출력하는 프로그램을 작성하시오

 

정답코드

S = list(input())
c = 'abcdefghijklmnopqrstuvwxyz'

for i in c:
    if i in S:
        print(S.index(i), end =' ')
    else:
        print(-1, end=' ')

 

풀이 

  1. 입력받은 문자열을 리스트로 저정한다.
  2. 문자열의 각 문자들이 하나의 요소로 분리되어 S에 들어간다. 
  3. 문자열 c안에 a부터 z까지의 알파벳을 넣어준다. 
  4. 이제 순서대로 c안의 글자들을 살펴볼건데, 
  5. 만약 그 글자가 입력받은 문자열 안에 존재한다면,
  6. 그 글자가 입력받은 문자열 중 어느 부분에 존재하는지 인덱스로 확인한다. 
  7. 만약 존재하지 않는다면 -1을 출력한다. 

 

느낀 점

일단 내가 작성했던 코드는 아래와 같다:

def findindex(a):

    listascii = []
    listword = []
    listreturn = []

    for i in range(abs(ord("a") -  ord("z"))+1):
        listascii.append(97 + i)

    for i in a:
        listword.append(ord(i))

    for n in listascii:
        if n in listword:
            listreturn.append(listword.index(n))
        else:
            listreturn.append(-1)

    return listreturn


word = input()

for i in findindex(word):
    print(i, end = " ")

 

일단 한 줄로 끝낼 수 있는 알파벳 a부터 z까지의 구현을 굳이, 굳이 아스키 코드를 활용하여 구현하였다. 

그 외의 것들은 대략 비슷하다. 

나의 생각보다 훨씬 간단하고 또 다양한 방법들이 존재하기에,

아이디어가 떠올랐다고 그거에만 매달리지 않는 연습을 해야겠다.

 

댓글