Love Every Moment

〔백준/파이썬〕10809번 알파벳 찾기 본문

PROGRAMMING::LANGUAGE/Python

〔백준/파이썬〕10809번 알파벳 찾기

해 송 2022. 6. 24. 17:33
반응형

출처

 

10809번: 알파벳 찾기

각각의 알파벳에 대해서, a가 처음 등장하는 위치, b가 처음 등장하는 위치, ... z가 처음 등장하는 위치를 공백으로 구분해서 출력한다. 만약, 어떤 알파벳이 단어에 포함되어 있지 않다면 -1을 출

www.acmicpc.net

 


 

문제

알파벳 소문자로만 이루어진 단어 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() 는 에러를 발생시킨다
 

파이썬 find( ), index( ) 비교 / 인덱스, 위치를 찾는 함수(Python)

파이썬 find( ), index( ) - 순서 - 1.find / index 공통적인 내용 2.find / index 차이점 1. find( ), index( ) 공통적인 내용 1-1) 두 함수의 동일한 사용방법 '변수. find(찾을 문자)' / '변수. index(찾을 문..

ooyoung.tistory.com

 

반응형
Comments