본문 바로가기
🔅코딩테스트 공부🔅/❗백준

[백준] 10809번 알파벳 찾기(with python)

by 윤무무 2023. 1. 20.

https://www.acmicpc.net/problem/10809

 

10809번: 알파벳 찾기

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

www.acmicpc.net

 

1. 내가 작성한 코드
vo_ca = list(input()) #소문자로 주어짐
arr = [] #a~z list
ind_list = []

for i in range(97,123): #a~z까지 들어있는 list 생성
  arr.append(chr(i))

for j in arr:
  if j in vo_ca: 
    ind_list.insert(arr.index(j), vo_ca.index(j))
  else :
    ind_list.insert(arr.index(j), -1)

for ind in ind_list:
  print(ind, end=" ")

 

이게 정녕 브론즈5의 난이도가 맞는가 고민하면서 풀었는데,

 

구글링해보니 find 라는 함수를 이용하면 되는 거였네 살면서 첨들어보는 함수,,

 

역시 기본기가 제일 중요해 ㅠ

 

2. find() 
S = input()

for x in 'abcdefghijklmnopqrstuvwxyz':
    print(S.find(x), end = ' ')

 

find 함수는 문자열 안에 첫 번째로 위치한 순서를 출력하고, 없는 경우 -1 을 출력하는 함수이다.

 

index() 함수와의 차이점 : index는 문자가 없을 경우 valueerror를 출력하지만, find는 -1을 출력한다.

 

3. 정리 
  • find() 함수를 통해 위치 출력 가능 (없으면  -1)
  • 소문자의 아스키코드는 97~ , 대문자의 아스키코드는 65~
  • insert(a,b) : a위치에 b삽입
  • S.index(a) : S 리스트에 있는 원소 a의 인덱스 반환

댓글