[백준] 10809 알파벳 찾기

임정민·2025년 2월 8일
0
post-thumbnail

문제 설명

[문제]

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

[입력]

첫째 줄에 단어 S가 주어진다. 단어의 길이는 100을 넘지 않으며, 알파벳 소문자로만 이루어져 있다.

[출력]

각각의 알파벳에 대해서, a가 처음 등장하는 위치, b가 처음 등장하는 위치, ... z가 처음 등장하는 위치를 공백으로 구분해서 출력한다.

만약, 어떤 알파벳이 단어에 포함되어 있지 않다면 -1을 출력한다. 단어의 첫 번째 글자는 0번째 위치이고, 두 번째 글자는 1번째 위치이다.

[입출력 예]

풀이

S = input().strip() # 양쪽 공백 없이 받아오기

alphabets = [-1] * 26

for i in range(len(S)):
    index = ord(S[i]) - ord('a') # a를 기준으로 몇번째 알파벳인지
    if alphabets[index] == -1:
        alphabets[index] = i

print(" ".join(map(str, alphabets)))

회고

매번 공백 없이 받아오는 건 왜 깜빡하는지 모르겠다. 이 문제 풀면서 드디어 인덱스의 경우 A를 기준으로 하여 ord()를 이용하는 습관을 들이게 되었다.

다른 시리즈에서 작성했던 거 같은데, ord(문자)는 하나의 문자를 인자로 받아서 해당 문자에 해당하는 유니코드 정수를 반환한다. 한 문자를 기준으로 유니코드 정수를 서로 빼주면 우리가 원하는 알파벳 순서를 출력할 수 있다.

profile
Data Science and Natural Language Processing

0개의 댓글

관련 채용 정보