1 분 소요

문제 링크

풀이

def solution(s):
    words = []
    answer = []
    for letter in s:
        k = 1
        if letter not in words:
            answer.append(-1)
            words.append(letter)
        else:
            a = reversed(words)
            for i in a:
                if i == letter:                    
                    answer.append(k)
                    break
                k += 1
            words.append(letter)
    return answer
                       

다른 풀이

def solution(s):
    
    #dict() / 알파벳:위치(인덱스) {"alp":idx}
    alp_idx = {} 
    
    result = []
    
    for idx, alp in enumerate(s):
        
        #alp이 alp_idx의 key중에 없으면 result에 -1 추가
        if alp not in alp_idx:    
            result.append(-1)
        
        #alp이 alp_idx의 key중에 있으면 result에
        #(alp의 현재위치) - (alp_idx안에 있는 alp 위치) 추가
        else:    
            result.append(idx - alp_idx[alp])
        
        #alp_idx에 {alp:현재 위치} 추가(리셋)
        alp_idx[alp] = idx
    
    return result

풀이 해석

알파벳과 인덱스를 dict 타입을 이용해 저장하고 알파벳이 나올때마다 value값을 최신화하는 방식으로 해결하였다

배울 점

  • dict에 알파벳과 인덱스 값을 저장한 후 인덱스 값을 최신화하는 방식
  • enumerate 사용해서 index 값 key값으로 저장

댓글남기기