day1 백준 10809번 : 알파벳 찾기 [Python]

문제출처

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

 

10809번: 알파벳 찾기

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

www.acmicpc.net

내가 처음에 작성한 코드는 다음과 같다.

s = input()
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}

for char in s:
    alphabet[char] = s.index(char)

rslt = ''
for value in alphabet.values():
    rslt += str(value) + ' '
print(rslt)

 

근데 틀렸다. 나는 에디터를 비쥬얼스튜디오 코드를 쓰는데 비쥬코드 상에서는 계속 정답이 맞게 나왔다.

한참을 왜 틀렸는지 몰랐는데

 

values()함수 뿐만아니라 keys()함수는 순서대로 값이 반환된다는 보장이 없다.

(dictionary형 자체가 집합의 일종이라 순서가 없기 때문에)

정말 기본적인 문법 실수ㅜㅜ...

 

dictionary형으로 풀면 좋을거 같다고 생각했는데 그렇지 않았던 것이다.

 

s = input()
alphabet = 'abcdefghijklmnopqrstuvwxyz'
count = []

for i in range(len(alphabet)) :
    count.append(-1)

for i in range(len(alphabet)):
    for char in s:
        if alphabet[i] == char :
            count[i] = s.index(char)
    i += 1

for i in count :
    print(i, end = ' ')

그래서 그냥 문자열과 list 만으로 풀었다.

myoskin