Coding Test/백준[BAEK JOON]
[파이썬/Python3] 백준 10809번 알파벳 찾기
꾸물꾸물 말고 꿈을
2024. 8. 28. 23:05
머리 식히기에 백준이 최고다,, 옜날 생각 나고 쉬운 문제 풀다보면 힐링되는 느낌,, ㅋ.ㅋ 🥲
S =input()
position= [-1]*(ord('z')-ord('a')+1)
for idx, j in enumerate(S):
pos = ord(j)-ord('a')
if position[pos]==-1:
position[pos] = idx
for i in position:
print( i,end=' ')
S=input()
for x in 'abcdefghijklmnopqrstuvwxyz':
print(S.find(x),end=' ')
find 함수는 어떤 찾는 문자가 문자열 안에서 첫 번째에 위치한 순서를 숫자로 출력하고, 찾는 문자가 문자열 안에 없는 경우에는 -1을 출력하는 함수
그냥 정답이 find 함수 그 자체인 것...
하지만 find 함수를 모르면 더 재밌게 풀 수 있다..
<최대한 짧은 코드>
이 것 보다 짧은 코드는 없을듯.
print(*map(input().find, map(chr, range(ord('a'), ord('z')+1))))
힌트
chr은 정수를 입력받아 해당 정수에 대응하는 유니코드 문자를 반환하는 파이썬 내장 함수
map: 첫 번째 인자로 함수, 두 번째 인자로 이터러블(반복 가능한 객체, 예: 리스트)을 받아서, 이터러블의 각 요소에 첫 번째 인자로 받은 함수를 적용한 결과를 반환하는 함수
*map은 map이 반환하는 이터러블 객체의 요소들을 하나씩 언패킹(풀어내는)하는 기능. ( *을 사용하여 리스트나 튜플의 요소들을 하나씩 꺼내어 함수의 인자로 전달)
해설
a~z에 해당하는 정수를 하나씩 chr함수에 적용하고, chr함수에 의해 유니코드 문자를 반환하게됨.
반환된 유니코드들은 *map함수안에 있으므로 하나씩 입력 문자열안에서 첫 번째에 위치한 순서를 숫자로 출력하게 됨.