유형 : 구현 

풀이 시간 : 15분

 

def solution(s):
    answer = list(s)
    ltdict = {}
    res = [-1 for x in range (len(s))]
    for i in range(len(s)):
        if s[i] in ltdict.keys():
            res[i] = i - ltdict[s[i]]
            ltdict[s[i]] = i
        else:
            ltdict[s[i]] = i
    return res

 

비교적 구상을 잘 했던 문제. 

중복된 key를 가질 수 없는 dict의 특성을 활용하여 풀었다. 

만약 dict에 해당 key가 이미 있다면 -> 현재 index - 최신 index (dict에 있는 값)

없다면 -> 처음 나오는 것이므로 dict에 값 넣어 주기

 

 

dict 관련 함수들 

dict.keys() : key array를 반환, 이때의 type은 dict_array

dict.values() : value array를 반환. 

 

n in dic / n not in dic 

 : 굳이 .keys() 에서 존재하는지 보지 않아도 됨. 그냥 dict에 in 쓰면 바로 key가 존재하는지 여부를 알 수 있다.

 

dict.items() : (key, value)를 반환

 

dict에서 key 값으로 원소를 찾아낼 때 

1) dict[key] -> key 값이 존재하지 않는 값일때 keyerror 발생

2) dict.get(key)

 마찬가지로 동작하는 메서드,

 dict.get(key, defalt) 로 쓸 경우, key 값이 존재하지 않아도 설정한 default 값을 반환함

 

삭제 : array와 마찬가지로 del, pop을 사용할 수 있다. 

 

 

복사했습니다!