백준 10809번 파이썬

6268 단어 백준백준

문제링크: 백준 10809번(알파벳 찾기)

처음 코드

s = input()

dic = {}
count = 0
for i in s:
    if i in dic.values():
        count += 1
        continue
    dic[count] = i
    count += 1

index = {}
for i in range(97, 123):
    index[chr(i)] = -1

for key, value in dic.items():
    for key2, value2 in index.items():
        if value == key2:
            index[key2] = key
            continue

for i in index.values():
    print(i, end = " ")

입력받은 문자열을 바탕으로 dic이라는 딕셔너리에 인덱스를 key로, 알파벳을 value로 넣어줬고,
a~z를 key로 -1을 value로 갖는 딕셔너리 index를 하나 더 만들어 줬다.
이후 dic의 value와 index 딕셔너리의 key가 일치하면 index의 key의 value로 dic의 key값을 넣어 출력했다.


문제점

딕셔너리를 사용하지 않고 풀 수 있고, 코드가 복잡해서 간소화 할 필요가 있다고 생각했다.


나중 코드

s = input()
alpha = [-1]*26

for i in range(len(s)):
    if alpha[ord(s[i]) - 97] != -1:
        continue
    else:
        alpha[ord(s[i]) - 97] = i

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

알파벳의 수 만큼 리스트를 생성했고, 입력 문자열을 아스키코드로 변환하여 소문자 a의 아스키 코드값인 97을 빼 해당 값을 리스트에 넣어주었다.

좋은 웹페이지 즐겨찾기