프로그래머스 | 가장 가까운 같은 글자 [파이썬 python]

2023. 4. 3. 15:40·Algorithm/프로그래머스
 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

코드

def solution(s):
    answer = []
    for i in range(len(s)):
        if s[i] in s[0:i]:
            answer.append(i - s[0:i].rindex(s[i]))
        else:
            answer.append(-1)
    return answer

s='banana'일 때, s의 각 위치보다 앞에 있으면서 가장 가까운 곳에 있는 같은 문자와의 거리를 찾는 문제이다.

 

'banana'의 경우 다음과 같다.

1) b는 첫 번째 문자이고 앞에 같은 문자열이 없으므로,  -1
2) a 앞의 문자열인 'b'에는 같은 문자열이 없으므로, -1
3) n 앞의 문자열인 'ba'에는 같은 문자열이 없으므로, -1
4) a 앞의 문자열인 'ban'에는 a가 있으므로, 3 - 1 = 2
5) n 앞의 문자열인 'bana'에는 n이 있으므로, 4 - 2 = 2
6) a 앞의 문자열인 'banan'에는 a가 있고 가장 가까운 곳과의 거리는, 5 - 3 = 2

따라서 결과는 [-1, -1, -1, 2, 2, 2]가 된다.

 

본인의 앞까지의 문자열에 같은 문자열이 있는지 판단하기 위해 if 조건문을 작성하였다.

s[0:i]는 문자열 s에서 0번 인덱스부터 i-1번째 인덱스까지의 문자열을 슬라이싱 하는 것이다.

i가 5이면, banana의 [0:5]은 banan이 된다.

 

슬라이싱 한 문자열에 해당 문자열이 포함되어 있으면, 거리를 구한다.

이때, rindex 함수를 사용하였는데 index()는 앞에서부터 인덱스를 구하는 반면, rindex()는 뒤에서부터 인덱스를 구해준다. 

우리는 현재 문자열부터 가장 가까운 곳에 위치한 문자열의 위치를 알아야 하므로 rindex()를 사용하는 것이다.

 

i = 5일 때, s[i]는 a이다.

s[0:i]인 banan에서 s[i]와 가장 가까운 위치에 있는 같은 문자열은 3번 인덱스에 위치한 a이다.

banan의 뒤에서부터 a의 위치를 찾아야 하기 때문에 rindex()를 사용하였고, s[0:i].rindex(s[i])를 하면 가장 가까운 위치를 찾을 수 있다.

해당 위치를 i에서 빼주면 우리가 구하고자 하는 거리인 5 - 3 = 2를 구할 수 있다.

 

 

저작자표시 (새창열림)
'Algorithm/프로그래머스' 카테고리의 다른 글
  • 프로그래머스 | 소수 찾기 [파이썬 python]
  • 프로그래머스 | 폰켓몬 [파이썬 python]
  • 프로그래머스 | 푸드 파이트 대회 [파이썬 python]
  • 프로그래머스 | 콜라 문제 [파이썬 python]
dduniverse
dduniverse
  • dduniverse
    dduniverse
    dduniverse
  • 전체
    오늘
    어제
    • 분류 전체보기 (245)
      • Algorithm (123)
        • 알고리즘 이론 (8)
        • 백준 (19)
        • 프로그래머스 (83)
        • 구름 알고리즘 먼데이 챌린지 (13)
      • 빅데이터분석기사 (10)
        • 통계 (4)
        • 실기 (6)
      • KT에이블스쿨 (26)
      • FrontEnd (11)
        • React (5)
        • 기타 (6)
      • BackEnd (18)
        • Django (15)
        • Spring (3)
      • DS & ML (11)
        • Machine Learning (9)
        • Kaggle (2)
      • TIL (46)
        • python (22)
        • javascript (3)
        • 오류해결 (10)
        • 기타 (10)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
    • 관리
    • 글쓰기
  • 링크

  • 인기 글

  • hELLO· Designed By정상우.v4.10.0
dduniverse
프로그래머스 | 가장 가까운 같은 글자 [파이썬 python]
상단으로

티스토리툴바