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 만으로 풀었다.
'문제풀이 > 코딩테스트' 카테고리의 다른 글
day6 백준 1011번 : Fly me to the Alpha Centauri [Java] (0) | 2020.09.03 |
---|---|
day5 백준 10250번 : ACM 호텔 [Java] (0) | 2020.09.01 |
day4 백준 2869번 : 달팽이는 올라가고 싶다 [Java] (0) | 2020.08.31 |
day3 백준 11720번 : 숫자의 합 [Java] (0) | 2020.08.27 |
day2 백준 2839번 : 설탕 배달 [Java] (0) | 2020.08.27 |