문제
알파벳 소문자로만 이루어진 단어 S가 주어진다. 각각의 알파벳에 대해서, 단어에 포함되어 있는 경우에는 처음 등장하는 위치를, 포함되어 있지 않은 경우에는 -1을 출력하는 프로그램을 작성하시오.
내 코드
import sys
S = list(sys.stdin.readline().rstrip())
count = [-1 for _ in range(26)]
L = len(S)
for i in range(L):
idx = ord(S[i]) - 97
if count[idx] == -1:
count[idx] += i+1
print(*count)
-1로 구성되어 있는 리스트를 알파벳의 개수 크기만큼 만들고, 알파벳의 아스키 코드를 인덱스 번호로 활용하여 나온 순서를 입력한다.
똑같은 알파벳이 중복되어 나올 경우를 생각하여 이전에 같은 알파벳이 나오지 않았을 경우에만 위치를 업데이트 한다. 같은 알파벳이 2번 이상이 나와도 어차피 처음 등장했을 시점에만 생각하면 되기 때문이다.
반응형
'Problem Solve > 백준' 카테고리의 다른 글
[Python] 백준 11655번 - ROT13 (0) | 2024.03.25 |
---|---|
[Python] 백준 10820번 - 문자열 분석 (0) | 2024.03.25 |
[Python] 백준 10808번 - 알파벳 개수 (0) | 2024.03.22 |
[Python] 백준 1935번 - 후위 표기식2 (0) | 2024.03.13 |
[Python] 백준 17299번 - 오등큰수 (1) | 2024.03.12 |