미소를뿌리는감자의 코딩

[백준 2024/02/05] 10809번 알파벳 찾기 본문

코딩 테스트/백준

[백준 2024/02/05] 10809번 알파벳 찾기

미뿌감 2024. 2. 5. 20:16
728x90

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

 

10809번: 알파벳 찾기

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

www.acmicpc.net

 

1. 접근 방법

 

모든 소문자들을 알파벳으로 key 값을 가지고, -1을 value로 가지는 dictionary를 선언하였다. 

alphabet_dict = {ch: -1 for ch in string.ascii_lowercase}

 

한 줄로 적힌 코드 같은 경우 해석하기 애매할 수 있는데, for 앞의 부분을 떼서 보면 편하다. 즉, 

 

for ch in string.ascii_lowercase:
	ch: -1

 

이렇게 된 것이나 다름 없다.

 

따라서 모든 ascii_lowercase에 대해서, 

a: -1

b:-1

c:-1

...

을 dictionary에 넣겠다는 말과 동일하다.

 

이렇게 넣고 난 후, input으로 받아온 str을 하나씩 읽기 시작하였다.

 

만약 abcd라면,

dict['a'] 를 하여 해당 key의 value를 알아본다. 만약 참조가 안되었다면 -1로 저장되어 있기에,

-1이라면, abcd.index(a)로 값을 변환시켜준다.

 

-1이 아니라 다른 값이라면, 이미 참조가 된 값

즉 앞에서 이미 index 선언이 완료된 key이므로

skip 해준다.

 

2. 코드

import string

alphabet_dict = {ch: -1 for ch in string.ascii_lowercase}

str_in = input()

for i in range(0, len(str_in),1):
    if(alphabet_dict[str_in[i]]==-1):
        alphabet_dict[str_in[i]] = i

values_str = " ".join(str(value) for value in alphabet_dict.values())
print(values_str)
728x90