728x90

◯문제 링크

 

[백준,10809]알파벳 찾기

 

◯코드 미리보기

Test_str = input()

alphabet_dict = {}

for i in range(97, 123):
    alphabet_dict[chr(i)] = -1
    
for i in range(len(Test_str)):
    if alphabet_dict[Test_str[i]] == -1:
        alphabet_dict[Test_str[i]] = i
    
Ans = list(alphabet_dict.values())

for i in range(len(Ans)):
    print(Ans[i],end=" ")

설명

Test_str = input()
alphabet_dict = {}

먼저 입력한 문장을 받는 변수이다.

그 뒤에 따라오는 코드는 딕셔너리 선언을 위한 코드이다. 이름에서 알 수 있듯이, 알파벳과 숫자를 같이 정리하기 위한 딕셔너리이다.

 

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

먼저 아스키 코드를 사용해서 모든 알파벳을 key로 넣어주면서, value를 -1로 할당해 준다.

 

 

for i in range(len(Test_str)):
    if alphabet_dict[Test_str[i]] == -1:
        alphabet_dict[Test_str[i]] = i

다음은 해당 코드를 활용하기 위한 코드이다. 

for문은 문장의 길이만큼 반복을 해준다.

if문과 그 아래 코드는 입력받은 문장에 해당하는 알파벳을 key로 입력했을 때 value가 -1이면 value를 자릿값으로 교체하기 위한 코드이다.

if문을 활용한 이유는, 단어가 여러번 사용되는 경우에는 맨 처음 오는 자릿수만 저장한다고 했기 때문이다. if문의 조건을 충족한다는 것은 그 이전에는 같은 문자가 없었다는 의미이다.

 

Ans = list(alphabet_dict.values())
for i in range(len(Ans)):
    print(Ans[i],end=" ")

다음은 이렇게 정리가 끝난 value값들을 모두 출력해주기 위한 작업이다.

.values()함수를 활용하면 원하는 딕셔너리의 value값들을 list형태로 저장할 수 있다. 다만 이것은 완전한 list는 아니다. 그래서 list로서 사용을 하기 위해서는 list함수로 변환이 이루어져야한다.

for문은 처리가 완료된 value값들을 한줄로 출력해주기 위한 코드이다. print의 end값을 공백 한칸으로 바꾸었다.

 

 

배운 것

⩥딕셔너리의 key와 value는 list형태로 꺼내 올 수 있다. 다만 온전한 list로 사용하려면 list로 변환해주어야 한다.

⩥딕셔너리에 원소를 추가하려면 (딕셔너리 이름)[key] = (value)의 형태로 코드를 짜면 된다.

728x90

+ Recent posts