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

2023. 12. 28. 14:38알고리즘/문제풀이

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

 

https://school.programmers.co.kr/learn/courses/30/lessons/142086

 

프로그래머스

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

programmers.co.kr

 

문제 설명

 

주어진 문제 설명
주어진 입출력 예시

 

  • 최근 dictionary 사용하는 법을 알게 되어서 dictionary를 적용해서 풀이
  1. 주어진 문자열을 set으로 중복 글자를 제거한 뒤 리스트로 변환 
  2. 딕셔너리에 각 처음 등장하는 경우 값을 -1로 세팅
  3. 반복문 실행
    1. if dic[s[i]]==-1인 경우
      1. answer에 해당 값 삽입 ->  -1인 경우 처음 등장하였기 때문이다
    2. else 아닌 경우
      1. 글자의 idx, i에서 dic[s[i]]를 뺀 값을 answer에 삽입
    3. dic [s [i]] = i로 dictionary 내부의 값 초기화

 

풀이 코드

 

def solution(s):
    answer = []
    dic={}
    s1 = list(set(s))
    for i in s1:
        if i not in dic:
            dic[i] =-1
    for i in range(len(s)):
        if s[i] in dic and dic[s[i]]==-1:
            answer.append(dic[s[i]])
        else:
            answer.append(i - dic[s[i]])
        dic[s[i]] = i


              
    return answer