문자열 s
가 주어졌을 때, s
의 각 위치마다 자신보다 앞에 나왔으면서, 자신과 가장 가까운 곳에 있는 같은 글자가 어디 있는지 알고 싶습니다.
예를 들어, s
="banana"라고 할 때, 각 글자들을 왼쪽부터 오른쪽으로 읽어 나가면서 다음과 같이 진행할 수 있습니다.
따라서 최종 결과물은 [-1, -1, -1, 2, 2, 2]가 됩니다.
문자열 s
이 주어질 때, 위와 같이 정의된 연산을 수행하는 함수 solution을 완성해주세요.
s
s
s | result |
---|---|
"banana" | [-1, -1, -1, 2, 2, 2] |
"foobar" | [-1, -1, 1, -1, -1, -1] |
입출력 예 #1
지문과 같습니다.
def solution(s):
answer = []
# 임시 문자열
string = ''
# 하나씩 뽑기
for i in s:
# 임시 문자열에 해당 글자가 없으면
if not i in string:
# answer에 -1 넣고 임시 문자열에 글자 추가
answer.append(-1)
string += i
# 있으면
else:
# 뒤에서 부터 해당 글자의 위치를 찾고
num = string.rfind(i)
# 마지막 위치와 찾은 위치를 뺀 값을 넣는다.
answer.append(len(answer)-num)
string += i
return answer
https://school.programmers.co.kr/learn/courses/30/lessons/142086?language=python3