본문 바로가기
코딩테스트/백준 알고리즘 풀이

[백준 알고리즘/python] 백준 10809번 알파벳 찾기, 파이썬

by Godgil 2020. 3. 18.

백준 알고리즘 10809번 알파벳 찾기, 파이썬

 

이번 문제는 백준 알고리즘의 10809번 알파벳 찾기 문제이다.

역시 파이썬으로 풀었다.

 

이 문제는 생각 할 시간이 좀 필요했다.

내 생각대로 문제를 분해해보면,

 

#생각1. 알파벳 소문자로 이루어진 단어 S가 주어진다.

#생각2. 이 단어 S에 각 알파벳이 처음 등장하는 위치를 숫자로 출력하고, 포함되지 않는 알파벳은 -1로 출력한다.

#생각3. 리스트를 알파벳 개수만큼 만들고 -1로 초기화한다.

#생각4. 반복문을 돌리면서 처음 나온 알파벳을 인덱스만큼 더해준다. 첫글자는 0번째 위치이다.

#생각5. 중복되는 문자가 있는 경우, 리스트의 값이 -1이 아닌경우 그냥 넘어가는 것을 조건으로 한다.

 

위처럼 생각하고 구현하니 좀 간단하게 나오긴 했다.

lst = list(-1 for i in range(0,26))
string = input()
count = 0
for i in string:
    if lst[ord(i)-97] != -1: #중복 문자 제거 
        count = count + 1
        continue
    lst[ord(i)-97] = count #아스키 코드를 생각해서 그 알파벳이 몇번짼지 파악
    count = count + 1

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

 

 

그냥 내가 좀 오래걸렸던 부분은, 리스트에 알파벳이 몇 번 인덱슨지 연결 해 주는 거였는데,

갑자기 아스키코드가 생각이 나서, 그걸 이용해서 그 위치에다 넣었다.

다른 사람들은 어떻게 풀었는지 한번 검색 해 봐야겠다.

 

문제 출처

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

 

10809번: 알파벳 찾기

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

www.acmicpc.net

 

댓글