본문 바로가기
코딩공부/백준 (python)

[백준 10809] 알파벳 찾기 (Python)

by CodingKwon 2022. 3. 9.

문제 링크

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

 

10809번: 알파벳 찾기

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

www.acmicpc.net

 

나의 코드 (Python)

S = list(input())
alpha = [-1] * 26   # 알파벳의 개수 26개
cnt = 0     # 입력값의 위치를 카운팅 할 변수

#  아스키 코드 : 97 ~ 122 (a ~ z)
for i in S:
    a = ord(i) - 97
    if alpha[a] == -1:  # -1인 경우 (처음 들어온 값만 변경)
        alpha[a] = cnt
    cnt += 1

# 결과
for j in alpha:
    print(j, end=" ")

 

이 문제는 알파벳 개수 26개만큼 -1을 세팅한 배열을 만들어 주고 입력값의 위치를 카운팅 할 변수가 필요합니다.

그리고 이를 아스키코드로 바꾸는 ord()를 사용하여 아스키코드로 변환하고 여기에 소문자 a의 시작 값인 97을 빼주어 입력값이 26개의 배열과 매핑하게 해 줍니다. alpha[0]은 a, alpha[1]는 b

 

이번 문제에서 가장 오류를 많이 실수 많이하는 부분은 "baekjoon"에서 "oo"부분이라고 생각합니다. 이때 문제에서 주어진 출력 값을 확인해보면 처음에 들어온 o의 순서만을 기록하고 있습니다.

 

이를 해결하는 부분이 if alpha[a] == -1: 입니다. 이런 조건문을 넣어준다면 이미 변경된 값은 다시 변경하지 않습니다.

 

 

 

댓글