Hey Tech

문자열처리 #백준10809 #알파벳 찾기 | 파이썬 풀이 본문

알고리즘/문제풀이

문자열처리 #백준10809 #알파벳 찾기 | 파이썬 풀이

Tony Park (토니) 2021. 10. 8. 10:26
728x90
반응형

📚  문제

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

 

10809번: 알파벳 찾기

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

www.acmicpc.net

💡 접근법

입력받는 단어의 좌측부터 알파벳부터 차례로 접근하여 몇 번째 알파벳인지

확인하여 정답으로 출력할 리스트를 업데이트하면 됩니다.

저는 a부터 z까지 모든 소문자 알파벳을 문자열로 받아오기 위해

파이썬 string 라이브러리 내 ascii_lowercase 함수를 활용하였습니다.

그리고, 문자열 탐색 결과를 저장할 리스트 원소는 모두 -1로 초기화하였습니다.

입력받는 단어의 좌측 알파벳부터 반복문을 통해 하나씩 접근하며,

해당 알파벳이 몇 번째 인덱스인지 확인하고 정답용 리스트를 업데이트하였습니다.

특히 알파벳이 처음 등장한 위치를 저장해야 하기 때문에,

1회 이상 단어에서 등장한 알파벳은 2번 처리하지 않도록 조건문을 달았습니다.

💻  코드

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

import string
alphabet = string.ascii_lowercase # abcdef...wxyz

input_string = input() # 단어 입력받기
answer = [-1]*len(alphabet) 

for idx in range(len(input_string)):
    # 알파벳이 한 번 이상 나왔을 경우
    if answer[alphabet.index(input_string[idx])] == -1:
        answer[alphabet.index(input_string[idx])] = idx

# 정답 출력
for ans in answer:
    print(ans, end = ' ')

👨‍💻 파이썬 파일(Github)

https://github.com/park-gb/algorithm-problem-solving/blob/main/string/boj_10809.py

 

GitHub - park-gb/algorithm-problem-solving: 알고리즘 문제 풀이 및 정리

알고리즘 문제 풀이 및 정리. Contribute to park-gb/algorithm-problem-solving development by creating an account on GitHub.

github.com


포스팅 내용에 오류가 있거나 조언/지적/피드백 환영입니다!😄

아래에 👇👇👇 댓글 남겨주시면 감사드리겠습니다.

그럼 오늘도 즐겁고 건강한 하루 보내시길 바랍니다 :)

고맙습니다.

728x90
반응형