코딩테스트

[Python] 가장 가까운 같은 글자

snoony 2024. 3. 7. 17:28

풀이 방법

처음 나온 문자들과 인덱스값을 저장해놓고, 처음 나온 문자가 아닐때 가장 가까운 인덱스를 찾아야 겠다고 생각했다.

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