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

ybk·2023년 10월 16일
0

프로그래머스

목록 보기
231/236

Lv.1 가장 가까운 같은 글자

문제 설명

문자열 s가 주어졌을 때, s의 각 위치마다 자신보다 앞에 나왔으면서, 자신과 가장 가까운 곳에 있는 같은 글자가 어디 있는지 알고 싶습니다.
예를 들어, s="banana"라고 할 때, 각 글자들을 왼쪽부터 오른쪽으로 읽어 나가면서 다음과 같이 진행할 수 있습니다.

  • b는 처음 나왔기 때문에 자신의 앞에 같은 글자가 없습니다. 이는 -1로 표현합니다.
  • a는 처음 나왔기 때문에 자신의 앞에 같은 글자가 없습니다. 이는 -1로 표현합니다.
  • n은 처음 나왔기 때문에 자신의 앞에 같은 글자가 없습니다. 이는 -1로 표현합니다.
  • a는 자신보다 두 칸 앞에 a가 있습니다. 이는 2로 표현합니다.
  • n도 자신보다 두 칸 앞에 n이 있습니다. 이는 2로 표현합니다.
  • a는 자신보다 두 칸, 네 칸 앞에 a가 있습니다. 이 중 가까운 것은 두 칸 앞이고, 이는 2로 표현합니다.
    따라서 최종 결과물은 [-1, -1, -1, 2, 2, 2]가 됩니다.
    문자열 s이 주어질 때, 위와 같이 정의된 연산을 수행하는 함수 solution을 완성해주세요.

입출력

코드 풀이

def solution(s):
    result = []  # 결과를 저장할 리스트
    seen = {}  # 이미 나온 문자와 그 위치를 저장하는 딕셔너리

    for i, char in enumerate(s):
        if char in seen:
            distance = i - seen[char]  # 현재 위치와 이미 나온 위치의 차이 계산
            result.append(distance)
        else:
            result.append(-1)
        
        seen[char] = i  # 현재 위치를 딕셔너리에 저장

    return result
  • 문자열 s를 왼쪽에서 오른쪽으로 반복하면서 각 위치에서 이미 나온 문자와 그 위치를 딕셔너리 seen에 저장한다. 이미 나온 문자를 만나면 해당 문자의 마지막 위치와 현재 위치의 차이를 계산하여 결과 리스트에 추가하고 이미 나온 문자가 아니면 -1을 추가한다. 이를 통해 주어진 조건에 따라 각 위치마다 가장 가까운 같은 글자를 찾을 수 있습니다.

출처: 프로그래머스 코딩테스트 연습

profile
개발자 준비생~

0개의 댓글