본문 바로가기

코딩테스트

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

풀이 방법

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

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] 추억 점수  (0) 2024.03.05
[Python] 달리기 경주  (0) 2024.03.05