백준 10809번 파이썬

이재문·2022년 9월 23일
0

평소에 알고리즘 문제를 풀면서 문제를 풀고 블로깅을 따로 하지 않는다.
하지만 이 문제를 다른 사람이 푼 코드를 보고, 반성을 했다...

"""
알파벳 소문자로만 이루어진 단어 S가 주어진다. 각각의 알파벳에 대해서, 단어에 포함되어 있는 경우에는 처음 등장하는 위치를, 포함되어 있지 않은 경우에는 -1을 출력하는 프로그램을 작성하시오.
첫째 줄에 단어 S가 주어진다. 단어의 길이는 100을 넘지 않으며, 알파벳 소문자로만 이루져 있다.

각각의 알파벳에 대해서, a가 처음 등장하는 위치, b가 처음 등장하는 위치, ... z가 처음 등장하는 위치를 공백으로 구분해서 출력한다.
만약, 어떤 알파벳이 단어에 포함되어 있지 않다면 -1을 출력한다. 단어의 첫 번째 글자는 0번째 위치이고, 두 번째 글자는 1번째 위치이다.
"""
  • 내가 푼 코드
# 10809
S = input()
idx = [ord(i)-97 for i in S]
result = [-1 for alphabet in range(36)]
for j in idx:
    result[j] = idx.index(j)
print(' '.join(map(str,result[:26])))
  • 다른 사람이 푼 코드
string = input()
alphabet = "abcdefghijklmnopqrstuvwxyz"
for i in alphabet:
    print(string.find(i), end = ' ')

나는 문제를 풀면서 너무 잘 풀었다고 생각했지만.. 부끄럽다
당연히 find함수의 결과로-1이 출력되는것을 본적이 있다. 하지만 신경을 써오지 않았다는 것
함수의 사용방법을 가볍게 여기지 말자..

와.. 그리고 print()에 매개변수가 있다는 사실을 처음 알았다

  • end
    출력 값 뒤에 end를 붙여서 함께 출력
print('a', end='b')
print('c')
> abc

for i in range(5):
	print('a' , end='z')
> azazazazaz
  • sep(separation)

출력 값 사이에 sep으로 분리 시켜준다.

print('a','b','c',sep='1')
> a1b1c

print('a','b','c',sep=' ')
> a b c
profile
이제부터 백엔드 개발자

0개의 댓글