BUILD_SSO

[프로그래머스] 142086 가장 가까운 같은 글자 python 본문

Problem Solving/Algorithm

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

sohyeonnn 2023. 5. 11. 00:29

문제링크: https://school.programmers.co.kr/learn/courses/30/lessons/142086

 

프로그래머스

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

programmers.co.kr

 

예제 입력:

"banana"

"footbal"

 

예제 출력:

[-1, -1, -1, 2, 2, 2]

[-1, -1, 1, -1, -1, -1]


주어진 문자열 's'에 대해 문자열 내에서 이전에 나타난 위치와의 차이를 계산하고, 그 결과를 answer로 return하는 문제이다.

파이썬 내장함수인 enumerate와 dictionary 타입을 쓰면 문제가 쉽게 해결된다.

 

enumerate

리스트의 원소에 순서값을 부여해주는 함수이다.

for index, word in enumerate(s):
	print(index, word)

위와 같이 문자열 s를 enumerate 함수를 사용해 index, word로 원소를 출력하면,

s = "banana" 인 경우

0 b
1 a
2 n
3 a
4 n
5 a

와 같이 출력된다.

 

dictionary 

딕셔너리는 키(key)와 값(value)으로 한 쌍의 대응 관계를 가지고 있는 자료형이다.
예를 들면 "a" : 1, "b" : "2" 이런식으로 "a"라는 Key가 열쇠고 그 "a"의 값으로 "1"라는 것이 쌍을 이루는 자료형 이다.


정답코드:

def solution(s):
    answer = []
    dict = {}
    
    for index, word in enumerate(s):
        if word not in dict:
            answer.append(-1)
            dict[word] = index
    
        else:
            answer.append(index - dict[word])
            dict[word] = index
        
    return answer
Comments