본문 바로가기
DEV/백준 알고리즘

백준 알고리즘 10809번(파이썬)

by 올커 2022. 10. 5.

 

백준 10809번_파이썬 알고리즘

Q. 백준 10809. 알파벳 찾기

알파벳 소문자로만 이루어진 문자열 S를 사용자로부터 입력받는다.

모든 알파벳을 하나씩 검사하여 입력받은 단어에 포함되어 있는 경우에는 처음 등장하는 인덱스를, 포함되어 있지 않은 경우에는 '-1'을 출력하는 프로그램을 작성한다.
(1) 입력 : 첫째 줄에 알파벳 소문자로 이루어진 단어 S를 사용자로부터 입력받는다. 단어의 길이는 100을 넘지 않는다.

(2) 출력 : 각 알파벳에 대해서 처음 등장하는 위치를 공백으로 구분해서 출력한다. 만약 포함되어있지 않다면 '-1'을 출력한다. 단어의 첫번째 글자의 위치는 인덱스와 같이 0번째 위치이고, 두번째 글자는 1번째 위치이다.


A. 풀이

 - 이전 11654번 문제에서 다루었던 아스키 코드를 활용하면 아래와 같이 간단하게 코드를 작성할 수 있다.

# Q 백준 10809. 알파벳 찾기 ★★★★
N = input()
alpha = list(range(97, 123))    # ASCII Code 알파벳 범위

for i in alpha:
    print(N.find(chr(i)), end=' ')

 

1) 변수 선언부

 - 사용자로 부터 문자열을 입력받아 N이라는 변수에 할당한다.

 - 각각 소문자 알파벳은 97번 'a'부터 122번 'z'까지 리스트에 넣어주어야 하므로 range(97, 123)으로 넣어준다.

 

2) 반복문(for문)

 - i를 알파벳 리스트 alpha의 인덱스를 따라가면서 값을 가져온다. 

 - 출력할 때에는 아스키코드를 문자로 변환하기 위해 chr()을 활용한다.

 - for 문을 돌면서 한줄씩 띄기 위해 .print문에 end=' ' 옵션을 추가하였다.

 - find 함수는 아래와 같이 사용할 수 있다.

string.find(찾을 문자열, 시작, 끝)

 - find함수의 괄호 안의 두번째, 세번째 인자 시작, 끝은 생략이 가능하다.

 - find 함수는 찾는 문자가 존재하면 해당되는 인덱스를 반환하고, 존재하지 않으면 -1을 반환한다.


R. 리뷰

 - 아스키 코드에 대한 이해를 바탕으로 알파벳을 차례대로 뽑아낼 수 있다.

 - find함수에 대한 기본적인 사용법을 잘 알고 있으면 쉽게 해결할 수 있다.

반응형

댓글