
풀이 방법
처음 나온 문자들과 인덱스값을 저장해놓고, 처음 나온 문자가 아닐때 가장 가까운 인덱스를 찾아야 겠다고 생각했다.
s의 길이만큼 i를 증가시켜가며 word = s[i] 일 때,
1. word가 word_dic에 없을 때 - 처음 나온 문자일 때
word_dic에 {word, word의 인덱스}를 저장하고, answer에 -1을 저장한다.
2. word가 word_dic에 있을 때
word_dic에서 이미 앞에 나온 문자의 index를 가져온다 -> p_index
현재 word의 index를 가져와 word_dic에 해당 word의 index 값을 갱신하고,
answer에 현재 인덱스 - 전에 나왔던 같은 글자의 인덱스 를 저장한다.
풀이 결과
def solution(s):
answer = []
word_dic = {}
for i in range(len(s)):
word = s[i]
if word not in word_dic:
word_dic[word] = s.index(word)
answer.append(-1)
else:
p_index = word_dic[word]
this_index = i
word_dic[word] = i
answer.append(i - p_index)
return answer
'코딩테스트' 카테고리의 다른 글
[이코테] 그리디 알고리즘 (0) | 2024.04.08 |
---|---|
[Python] 공원 산책 (0) | 2024.03.12 |
[Python] 문자열 겹쳐쓰기 (0) | 2024.03.05 |
[Python] 추억 점수 (2) | 2024.03.05 |
[Python] 달리기 경주 (0) | 2024.03.05 |