본문 바로가기
백준 알고리즘/문자열

[백준 10809][파이썬] 알파벳 찾기

by 웅대 2023. 1. 17.
728x90
반응형

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

 

10809번: 알파벳 찾기

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

www.acmicpc.net

 

아스키 코드를 사용해서 풀 수 있는 문제이다.

 

1. 모든 원소의 값이 -1인 길이가 26인 리스트를 생성한다.

 

li=[-1]*26

a의 경우 인덱스 0, b의 경우 인덱스 1 ... 이런식으로 매칭할 예정

 

2. 입력받은 문자열을 알파벳으로 나누어 해당 알파벳의 아스키 코드를 가지고 있는 리스트를 생성한다.

 

s = list(map(ord, input()))

 

3. 아스키 코드 값에서 a의 아스키 코드 값을 빼면 해당 알파벳의 인덱스 번호가 나온다.

 

이를 이용하여 해당 인덱스의 값이 -1이 아닐 때만 위치를 저장한다.

 

for i in range(len(s)):
    if li[s[i]-ord('a')]==-1: #처음 나온 위치를 저장
        li[s[i]-ord('a')]=i

 

전체 코드

li=[-1]*26
s = list(map(ord, input()))
for i in range(len(s)):
    if li[s[i]-ord('a')]==-1: #처음 나온 위치를 저장
        li[s[i]-ord('a')]=i
for i in li:
    print(i, end=" ")

 

find 메소드를 사용

 

문자열에 find 메소드를 사용하면 해당 문자가 존재하지 않으면 -1, 존재하면 해당 인덱스를 반환한다.

 

이를 사용하면 코드를 줄일 수 있다.

 

s=input()
alpha=[chr(ord('a')+i) for i in range(26)] #모든 알파벳을 저장한다. 
for i in alpha:
    print(s.find(i), end=" ") #해당 알파벳이 존재하지 않으면 -1, 존재하면 인덱스 출력력
728x90
반응형

'백준 알고리즘 > 문자열' 카테고리의 다른 글

[백준 1411][파이썬] 비슷한 단어  (0) 2023.07.11

댓글