Notice
Recent Posts
Recent Comments
Link
Love Every Moment
〔백준/파이썬〕10809번 알파벳 찾기 본문
반응형
출처
문제
알파벳 소문자로만 이루어진 단어 S가 주어진다. 각각의 알파벳에 대해서, 단어에 포함되어 있는 경우에는 처음 등장하는 위치를, 포함되어 있지 않은 경우에는 -1을 출력하는 프로그램을 작성하시오.
예제
# 입력
baekjoon
# 출력
1 0 -1 -1 2 -1 -1 -1 -1 4 3 -1 -1 7 5 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1
풀이
string = input()
# 알파벳(a~z)를 담을 리스트
alphabets = list()
# a와 z의 아스키코드 알아내기
a_ascii = ord('a')
z_ascii = ord('z')
for i in range(a_ascii, z_ascii + 1) :
alphabets.append(chr(i))
# 알파벳 순서대로 입력 받은 문자열 내에 존재하는지 검사
for i in alphabets :
print(string.find(i), end='')
if i != 'z' :
print(' ', end='')
- ord() 의 인자에 문자를 넘겨주면 해당 문자의 아스키 코드를 반환해준다(백준 11654번 참고)
- chr() 은 반대로 아스키코드(정수)를 인자로 넘겨주면 이에 해당하는 문자를 반환해준다
- 이렇게 얻어낸 a 와 z 의 아스키 코드를 이용해서 a~z 를 리스트에 담아준다
- 알파벳 순서대로 순회하며 find() 함수를 통해 입력 받은 문자열에 존재하는지 검사 후 위치를 출력한다
노트
- 예전에도 줄바꿈 없이 출력을 해야해서 print(~~~, end='') 를 썼었는데 이번에도 쓰였다
- 처음엔 알파벳 리스트에 추가할 때 range(a_ascii, z_ascii) 이렇게 했더니 마지막 z 가 포함되지 못해서 틀렸다
- range 범위 항상 주의하자
- ord() 와 chr() 차이?
ord(문자) => 아스키문자 반환
chr(정수) => 문자 반환
- find() 와 index() 메서드 차이?
- find() 는 찾는 문자가 없으면 -1 을 반환하지만, index() 는 에러를 발생시킨다
반응형
'PROGRAMMING::LANGUAGE > Python' 카테고리의 다른 글
〔백준/파이썬〕1157번 단어 공부 (0) | 2022.06.25 |
---|---|
〔백준/파이썬〕2675번 문자열 반복 (0) | 2022.06.24 |
〔모두를 위한 파이썬〕튜플, 가장 빈도가 높은 단어 찾기 (0) | 2022.06.24 |
〔모두를 위한 파이썬〕딕셔너리, 데이터 빈도수 측정하기 (0) | 2022.06.24 |
〔모두를 위한 파이썬〕리스트, split() 으로 원하는 부분 추출하기, 가디언 패턴 (0) | 2022.06.23 |
Comments