import sys
sentence = sys.stdin.readline().rstrip()
alphabet = {'a': -1, 'b': -1, 'c': -1, 'd': -1, 'e': -1,
'f': -1, 'g': -1, 'h': -1, 'i': -1, 'j': -1,
'k': -1, 'l': -1, 'm': -1, 'n': -1, 'o': -1,
'p': -1, 'q': -1, 'r': -1, 's': -1, 't': -1,
'u': -1, 'v': -1, 'w': -1, 'x': -1, 'y': -1, 'z': -1}
num = 0
for s in sentence:
if alphabet[s] == -1:
alphabet[s] = num
num += 1
for n in alphabet.values():
print(n, end=' ')
이 문제의 포인트는 단어에 (1)포함되어 있는 경우에는 처음 등장하는 위치를, (2)포함되어 있지 않은 경우에는 -1을 출력하는 것이다.
먼저 (2)번은 처음에 딕셔너리를 선언할때 '-1'로 선언하는 것으로 구현했다.
다음 (1)번은 다음과 같이 구현했다.
num = 0
for s in sentence:
if alphabet[s] == -1: #처음 등장한 알파벳이라면
alphabet[s] = num #그 알파벳의 위치 저장
num += 1
코드 설명을 하자면 alphabet[s]가 -1이라는 뜻은 초기화한 그대로라는 뜻이다. 즉, 지금 알파벳이 처음 등장하는 알파벳이라는 뜻이다. 따라서 그 알파벳의 위치를 저장해준다.
alphabet[s]이 -1이 아니라면 자연스럽게 continue가 되는 것이다. (+위치를 알려주는 변수인 num을 사용했다.)
import sys
sentence = sys.stdin.readline().rstrip()
alphabet = {'a': -1, 'b': -1, 'c': -1, 'd': -1, 'e': -1,
'f': -1, 'g': -1, 'h': -1, 'i': -1, 'j': -1,
'k': -1, 'l': -1, 'm': -1, 'n': -1, 'o': -1,
'p': -1, 'q': -1, 'r': -1, 's': -1, 't': -1,
'u': -1, 'v': -1, 'w': -1, 'x': -1, 'y': -1, 'z': -1}
num = 0
for s in sentence:
if alphabet[s] == -1: #처음 등장한 알파벳이라면
alphabet[s] = num #그 알파벳의 위치 저장
num += 1
for n in alphabet.values(): #결과 출력
print(n, end=' ')
-1로 초기화하면 쉽게 할 수 있는데.. 처음에 0으로 초기화해두고 코딩하다가 점점 산으로 갔었닼ㅋㅋㅋㅋ