백준 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함수에 대한 기본적인 사용법을 잘 알고 있으면 쉽게 해결할 수 있다.
'DEV > 백준 알고리즘' 카테고리의 다른 글
백준 알고리즘 1157번(파이썬) (0) | 2022.10.07 |
---|---|
백준 알고리즘 2675번(파이썬) (0) | 2022.10.06 |
백준 알고리즘 11720번(파이썬) (0) | 2022.10.04 |
백준 알고리즘 11654번(파이썬) (0) | 2022.10.03 |
백준 알고리즘 4344번(파이썬) (0) | 2022.10.02 |
댓글