유형 : 구현
풀이 시간 : 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을 사용할 수 있다.
'프로그래머스 > Lv. 1' 카테고리의 다른 글
32. 콜라 문제 ★ (0) | 2024.07.14 |
---|---|
31. 두 개 뽑아서 더하기 (itertools - combinations) (0) | 2024.07.14 |
29. 시저 암호 ★ (ord, chr, 간단히 알파벳 순회하기) (1) | 2024.07.14 |
28. 최소직사각형 ★ (0) | 2024.07.14 |
27. 삼총사 (itertools - combinations) (0) | 2024.07.12 |