[프로그래머스] Lv1 - 가장 가까운 같은 글자

김멉덥·2023년 7월 22일
0

알고리즘 공부

목록 보기
64/171
post-thumbnail
post-custom-banner

문제

프로그래머스 연습문제


코드 구현

def solution(s):
    answer = []

    word = ''
    for i in range(len(s)):
        if (s[i] in word):       # 만약 이미 있는 단어라면, 떨어진 간격 구하기 (현재 위치에서 가장 가깝게 떨어진 값)
            answer.append(i - word.rindex(s[i]))
        else:
            answer.append(-1)    # 아니라면 -1로 표현

        word += s[i]    # 이미 있는 단어임을 알게하기 위해서 + 떨어진 간격을 구하기 위해서 -> 검사 후 word에 한 글자씩 추가

    return answer

풀이

  • word에 없는 글자면 → -1을 추가
  • word에 있는 글자면 (이미 한번 거쳐간 글자) → 간격 구하기
  • 간격을 구하기 위해 현재 인덱스에서 가장 가깝게 떨어진 글자의 인덱스를 구한다.

What I learned

▶️ rindex()
참고 : https://homzzang.com/b/py-191

지정 문자열의 마지막 위치를 찾아준다.

이 문제에서는 현재 위치에서 만약 word에 이미 있는 글자가 나왔을 때, 만약 이 글자가 이전에도 나왔어서 4칸 앞, 2칸 앞에 있다라고 한다면,
가장 가까운 간격인 2칸 앞에 있는 글자의 인덱스를 구해서 현재 위치에서 빼주어야 한다. (떨어진 간격을 구하기 위해)

따라서 현재 문자열에서 같은 글자라면 가장 앞에 있는 글자 인덱스가 아닌, 가장 마지막 위치를 구해주어야 가까운 간격이기 때문에, rindex를 사용하였다.

s = "banana"
x = s.rindex("a")
print(x)

>>> 결과값: 5
profile
데굴데굴 뚝딱뚝딱 개발기록
post-custom-banner

0개의 댓글