프로그래머스 LV1 - 가장 가까운 같은 글자
풀이
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값으로 저장
댓글남기기