티스토리 뷰
[Python] 백준 알고리즘 온라인 저지 10809번 : 알파벳 찾기
Python3 코드
word = input()
alphabet = list(range(97,123)) # 아스키코드 숫자 범위
for x in alphabet :
print(word.find(chr(x)))
Python3 코드 풀이
1. 코드에 대한 전체적인 풀이
이번 문제는 입력받은 문자열의 각 알파벳이 문자열 안에서 위치한 순서를 출력하는 문제이다. 순서를 출력을 할 때는 a~ z 알파벳 순서에 맞춰서 입력받은 문자열에서 해당 알파벳이 없으면 -1을 출력하고 있으면 문자열 안에서 첫 번째 위치한 순서를 숫자로 출력한다.
a~z까지의 알파벳은 아스키코드의 숫자 범위로 리스트를 생성했다. 아스키코드에서 a= 97이고 z= 122이다. 97 ~ 122까지의 숫자가 a~z까지의 알파벳에 대응하는 아스키코드이다.
find 함수는 어떤 찾는 문자가 문자열 안에서 첫 번째에 위치한 순서를 숫자로 출력한다. 만일 찾는 문자가 문자열 안에 없는 경우에는 -1을 출력하는 함수이다. 이 문제에서 요구하는 바를 그대로 출력할 수 있는 함수여서 find 함수를 사용한 코드를 작성했다.
2. 코드 상단, 문자열을 입력받고 알파벳 리스트를 생성한다.
word = input()
alphabet = list(range(97,123)) # 아스키코드 숫자 범위
입려 받은 문자열은 word 변수에 선언하였다. 알파벳 리스트는 아스키코드를 이용해서 생성했다. a~z까지는 아스키코드에서 숫자 97~122에 해당하기 때문에 range 함수를 이용해서 97~122까지의 숫자 범위를 생성하고 list 함수를 이용해서 리스트로 변환하였다.
3. 코드 하단에서 find 함수를 사용한다.
for x in alphabet :
print(word.find(chr(x)))
alphabet 리스트의 숫자로 이루어진 각각의 원소를 for문을 이용하여 변수 x에 선언하고서 우선 문자열로 변환하기 위해 chr 함수를 사용하였다. chr 함수는 아스키코드에 해당하는 숫자를 문자열로 변환시키는 함수이다.
find 함수를 이용해서 입력받은 문자열 안에 chr 함수로 변환된 문자가 있는지 찾는다. 만일 문자열이 있으면 찾는 문자가 첫 번째에 위치한 인덱스 숫자를 출력하고 없으면 -1을 출력하게 된다.
4. 아스키코드 변환 함수
위 문제에서 사용한 chr함수와 find 함수에 대해 추가적으로 설명하면, chr( ) 함수는 숫자(아스키코드) -> 문자로 변환하는 함수이고 반대로 문자 -> 숫자(아스키코드)로 변환할 때는 ord( ) 함수를 사용한다.
5. find 함수와 index 함수의 비교
find 함수는 문자열에서만 사용 가능한 함수이다. 이와 유사한 기능을 하는 함수로 index 함수가 있다. index 함수는 문자열뿐만 아니라 리스트, 튜플과 같은 반복 가능한 iterable 자료형에서도 찾는 문자의 인덱스를 반환하는 함수로 쓰인다. find 함수와 다른 점은 find 함수는 찾는 문자가 문자열 안에 포함되지 않은 경우 -1을 출력하지만 index함수는 >AttributeError가 발생한다.
'파이썬 스킬업 > 백준 알고리즘 연습' 카테고리의 다른 글
백준 2675번 [파이썬] 문자열 반복 (2) | 2020.07.07 |
---|---|
백준 알고리즘 11720 [파이썬] : 숫자의 합 (4) | 2020.07.07 |
백준 11654 : 아스키코드 (파이썬) ord( )함수 (0) | 2020.07.07 |