본문 바로가기
python

17. python find 함수(백준 10809번 python)

by 장인이 2021. 1. 16.

  백준 10809번 문제를 풀던 와중 python find함수에 대해 알게 되어서 게시글을 작성하게 되었습니다.

 

<백준 10809번 문제>

  처음에는 위 문제를 풀기 위하여 직접 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)

댓글