Algorithm/문자열
[프로그래머스 lv1] 가장 가까운 같은 글자
09009
2023. 10. 8. 19:52
문제 보기
https://school.programmers.co.kr/learn/courses/30/lessons/142086
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
소스 코드
- 직접 해결한 풀이
def solution(s):
answer = [-1] * len(s)
dic = {}
for i in range(len(s)):
# 문자 하나를 처음 봤을 때 인덱스 정보를 dic에 저장
if s[i] not in dic:
dic[s[i]] = [i]
else:
# 문자가 이미 dic에 저장되어 있을 때 현재 인덱스에서 dic에 같은 문자가 있는 가장 최근 인덱스를 뺀다.
answer[i] = i - dic[s[i]][-1]
dic[s[i]].append(i)
return answer
- 개선 풀이
def solution(s):
answer = []
dic = dict()
for i in range(len(s)):
if s[i] not in dic:
answer.append(-1)
else:
answer.append(i - dic[s[i]])
dic[s[i]] = i
return answer
문자를 처음 만날 때 -1을 리스트에 넣어주고 dic에 인덱스 정보와 함께 값을 저장
처음이 아닐 경우 현재 인덱스에서 dic에 있는 인덱스 정보를 빼주고 다시 인덱스 정보를 업데이트해준다.