백준 10809번 문제를 풀던 와중 python find함수에 대해 알게 되어서 게시글을 작성하게 되었습니다.
처음에는 위 문제를 풀기 위하여 직접 a~z까지의 문자열 list와 입력받은 문자를 비교하여 값을 출력하는 코드를 사용했습니다.
import string
asc_list = list(string.ascii_lowercase)
s = input()
# 직접 비교한 경우
result = ''
for alp in asc_list:
counter = 0
for idx, tmp in enumerate(s):
if alp == tmp:
result += str(idx) + ' '
counter = 1
break
if counter == 0:
result += '-1 '
print(result)
하지만 구글링 결과, find함수를 활용하면 코드 수를 줄일 수 있다는 점을 알게 되었습니다. find 함수는 문자열 중에 특정 문자의 위치를 찾고, 없으면 -1을 return 해 주는 함수입니다.
s = 'baekjoon'
print(s.find('a'))
# 출력
# 1
print(s.find('c'))
# 출력
# -1
이를 활용하여 다시 문제를 풀어보니, 더 짧은 길이의 코드로 원하는 값을 구할 수 있었습니다.
import string
asc_list = list(string.ascii_lowercase)
s = input()
result = ''
for x in asc_list:
result += str(s.find(x)) + ' '
print(result)
'python' 카테고리의 다른 글
19. python, list.count 함수(문자열에서 특정 값 개수 찾기) (0) | 2021.01.16 |
---|---|
18. python, set 함수(리스트에서 중복 제거) (0) | 2021.01.16 |
16. python 아스키 코드 변환 방법 (0) | 2021.01.16 |
(중요)15. numpy (0) | 2021.01.14 |
14. Extra Data Structure - 5, Decimal (0) | 2021.01.13 |
댓글