문자열 s가 주어졌을 때, s의 각 위치마다 자신보다 앞에 나왔으면서, 자신과 가장 가까운 곳에 있는 같은 글자가 어디 있는지 알고 싶습니다.
예를 들어, s="banana"라고 할 때, 각 글자들을 왼쪽부터 오른쪽으로 읽어 나가면서 다음과 같이 진행할 수 있습니다.
문자열 s이 주어질 때, 위와 같이 정의된 연산을 수행하는 함수 solution을 완성해주세요.
def solution(s):
index = {x: -1 for x in s}
answer = []
for i, value in enumerate(s):
if index[value] == -1:
answer.append(index[value])
index[value] = i
else:
answer.append(i-index[value])
index[value] = i
return answer
딕셔너리 컴프리핸션으로 글자의 인덱스값을 -1로 모두 초기화 시킨후
enumerate를 사용하여 인덱스, 글자 모두를 사용하게 루프를 수행하였습니다.
if 조건에서는 인덱스값이 -1 즉 가장 최신값인 경우를 검사하고
그렇지않을경우 else 분기에서 가장 최신인덱스값과 지금 인덱스를 비교하여 answer 배열에 추가해줍니다. 그후 인덱스를 현재인덱스로 업데이트해줍니다.