Coding Test/Baekjoon

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

도돔 2023. 8. 1. 09:37

🔗 문제 링크

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

 

10809번: 알파벳 찾기

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

www.acmicpc.net

 

주어진 단어에 대해 모든 알파벳이 처음 나온 위치를 찾는 문제이다. 문제 자체는 어렵지 않지만, 나는 일일이 구현했는데 다른 사람의 풀이를 보니 더 나은 코드가 많아서 한 번에 정리해보려고 한다.

 


🔎 문제 풀이 & 작성 코드

나는 문제에 충실하게 직접 다 구현해냈다. 모든 알파벳에 대해 -1을 갖는 딕셔너리를 선언해 주고, 주어진 단어를 일일이 탐색해 처음 나온 자릿수로 딕셔너리 값을 바꾸어 주었다. 그다음 하나하나 다 출력해 주었다. 문제에서 하란대로 한 답안이지만, for문도 많이 쓰고 코드가 꽤 복잡하다. 그래서 다른 사람들의 풀이를 살펴봤는데, 훨씬 간단하고 예쁜 코드로 작성한 게 많았다!!

alphabet_dict = {}
for i in ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z']:
    alphabet_dict[i] = -1

word = str(input())

for j in range(len(word)):
    if alphabet_dict[word[j]]==-1:
        alphabet_dict[word[j]] = j

for x in alphabet_dict:
    print(alphabet_dict[x], end=' ')

 

다른 풀이) find 함수 사용

파이썬 기본 내장 함수중에 find()라는 함수가 있다. 이 함수는 찾는 문자가 문자열 안에서 첫 번째로 등장하는 위치를 숫자로 출력해 준다. 만약 찾는 문자가 문자열 안에 없으면 -1을 출력한다. 이 부분이 모두 함수에서 주어진 조건과 일치해서, find 함수를 사용하면 더욱 간단하게 풀 수가 있다.

word = str(input())

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

 

 


🌍 깃허브 링크

실제 작성한 해당 정답 코드는 깃허브에도 업로드해두었습니다.

 

dohyun-99 - Overview

dohyun-99 has 4 repositories available. Follow their code on GitHub.

github.com

 

 

 

 

 

728x90
반응형