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함수안에 있으므로 하나씩 입력 문자열안에서 첫 번째에 위치한 순서를 숫자로 출력하게 됨.