문제
알파벳 소문자로만 이루어진 단어 S가 주어진다. 각각의 알파벳에 대해서, 단어에 포함되어 있는 경우에는 처음 등장하는 위치를, 포함되어 있지 않은 경우에는 -1을 출력하는 프로그램을 작성하시오
정답코드
S = list(input())
c = 'abcdefghijklmnopqrstuvwxyz'
for i in c:
if i in S:
print(S.index(i), end =' ')
else:
print(-1, end=' ')
풀이
- 입력받은 문자열을 리스트로 저정한다.
- 문자열의 각 문자들이 하나의 요소로 분리되어 S에 들어간다.
- 문자열 c안에 a부터 z까지의 알파벳을 넣어준다.
- 이제 순서대로 c안의 글자들을 살펴볼건데,
- 만약 그 글자가 입력받은 문자열 안에 존재한다면,
- 그 글자가 입력받은 문자열 중 어느 부분에 존재하는지 인덱스로 확인한다.
- 만약 존재하지 않는다면 -1을 출력한다.
느낀 점
일단 내가 작성했던 코드는 아래와 같다:
def findindex(a):
listascii = []
listword = []
listreturn = []
for i in range(abs(ord("a") - ord("z"))+1):
listascii.append(97 + i)
for i in a:
listword.append(ord(i))
for n in listascii:
if n in listword:
listreturn.append(listword.index(n))
else:
listreturn.append(-1)
return listreturn
word = input()
for i in findindex(word):
print(i, end = " ")
일단 한 줄로 끝낼 수 있는 알파벳 a부터 z까지의 구현을 굳이, 굳이 아스키 코드를 활용하여 구현하였다.
그 외의 것들은 대략 비슷하다.
나의 생각보다 훨씬 간단하고 또 다양한 방법들이 존재하기에,
아이디어가 떠올랐다고 그거에만 매달리지 않는 연습을 해야겠다.
'Algorithm > baekjoon' 카테고리의 다른 글
[백준] 10988번 팰린드롬인지 확인하기 파이썬 (python) (0) | 2024.03.12 |
---|---|
[백준] 2675번 문자열 반복 파이썬 (python) (2) | 2024.03.11 |
[백준] 1546번 평균 파이썬 (python) (0) | 2024.03.11 |
[백준] 10811번 바구니 뒤집기 파이썬 (python) (0) | 2024.03.11 |
[백준] 3052번 나머지 파이썬 (python) (0) | 2024.03.11 |
댓글