[Python/파이썬] 백준 알고리즘 10809번 / 알파벳 찾기
문제 링크: https://www.acmicpc.net/problem/10809
10809번: 알파벳 찾기
각각의 알파벳에 대해서, a가 처음 등장하는 위치, b가 처음 등장하는 위치, ... z가 처음 등장하는 위치를 공백으로 구분해서 출력한다. 만약, 어떤 알파벳이 단어에 포함되어 있지 않다면 -1을 출
www.acmicpc.net
최종 소스코드
1. find 함수를 사용하지 않은 풀이
word = input()
out = []
for j in range(97, 123): # a = 97 z = 122
a = -1
for i in range(len(word)-1,-1,-1):
if ord(word[i]) == j:
a = i
print(a, end=' ')
2. find 함수를 사용한 풀이
word = input()
alp = list(range(97, 123))# a:97 z:122
for i in alp:
print(word.find(chr(i)), end=' ')
<풀이>
이번 문제는 find 함수를 이용하면 쉽게 풀 수 있는 문제이다. find 함수를 사용하지 않으면 '처음 등장하는 위치를 표시' , '포함돼있지 않다면 -1을 출력' 과 같은 부분을 모두 신경 써야 한다. find 함수는 이와 같은 작업을 알아서 해주는 함수이다.
1. find 함수를 사용하지 않은 풀이
1번 풀이는 입력받은 단어를 ord 함수를 통해 아스키코드로 바꾼뒤 a~z의 아스키코드와 일치하는지 조건문을 사용해 확인했다. 이 때 처음 등장하는 위치를 표시하기 위해 word[i]에서 i를 역순으로 사용했다. 만약 일치하는 아스키코드가 없을 경우 -1을 출력하기 위해 초깃값을 -1로 하였다.
2. find 함수를 사용한 풀이
find 함수는 문자열에서만 사용 가능하므로 chr을 사용해 아스키코드를 문자로 바꿔준다.
3. 파이썬 줄바꿈 제거
파이썬의 출력 함수는 end='\n'를 한 것처럼 자동으로 줄바꿈을 해준다. 이 줄바꿈을 없애고 이어지게 출력 하도록 바꾸려면 end=' '를 사용해주면 된다.
'알고리즘, 자료구조 > 백준' 카테고리의 다른 글
[Python/파이썬] 백준 알고리즘 2581번 / 소수 (0) | 2022.10.21 |
---|---|
[Python/파이썬] 백준 알고리즘 2941번 / 크로아티아 알파벳 (0) | 2022.10.20 |
[Python/파이썬] 백준 알고리즘 1157번 / 단어 공부 (0) | 2022.10.20 |
[Python/파이썬] 백준 알고리즘 1065번 / 한수 (0) | 2022.10.08 |
[Python/파이썬] 백준 알고리즘 4673번 / 셀프 넘버 (0) | 2022.10.07 |