🔗 문제 링크
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
'Coding Test > Baekjoon' 카테고리의 다른 글
[백준/파이썬] 2609번: 최대공약수와 최소공배수 풀이 (0) | 2023.08.04 |
---|---|
[백준/파이썬] 3009: 네 번째 점 풀이 (0) | 2023.08.01 |
[백준/파이썬] 11718: 그대로 출력하기 & 11719: 그대로 출력하기 2 풀이 (0) | 2023.07.31 |
[백준/파이썬] 1193. 분수찾기 풀이 (0) | 2023.07.28 |
[백준/파이썬] 10815. 숫자 카드 풀이 (0) | 2023.07.27 |