코딩 테스트/백준
[백준 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