Notice
Recent Posts
Recent Comments
Link
«   2025/06   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
Archives
Today
Total
관리 메뉴

잠 안 올 때 끄적끄적

[프로그래머스/파이썬/python3] Lv1. 가장 가까운 글자 본문

코딩/프로그래머스

[프로그래머스/파이썬/python3] Lv1. 가장 가까운 글자

kerp 2023. 1. 29. 16:29

> 문제

> 코드

나는 처음에 이렇게 풀었는데 쓸데없는 코드가 들어있었다.

def solution(s):
    s_dict = dict()
    answer=[]

    for s_ch in set(s):
        s_dict[s_ch] = [s.index(s_ch)]

    for s_i, s_ch in enumerate(s):
        li = s_dict[s_ch]
        if li[-1] == s_i: 
            answer.append(-1)
        else: 
            answer.append(-li[-1]+s_i)
            s_dict[s_ch].append(s_i)
    return answer

key에 특정 값이 있는지, 없는지는

in / not in

으로 확인하면 됐고... 

그래서 처음에 for문에 적힌 과정이 필요없었던 것임 ㅠㅠ

그리고 dict value값에 모든 인덱스를 다 넣을 게 아니고 마지막것만 있으면 되므로 list extend대신 그냥 값을 할당하면 됐다.

그렇게 간소화하면 

def solution(s):
	s_dict = {}
    answer = []

    for s_i, s_ch in enumerate(s):
        if s_ch not in s_dict:
            answer.append(-1)
        else:
            answer.append(s_i-s_dict[s_ch])
        s_dict[s_ch] = s_i
    return answer

이런식으로 쓸 수 있겠다.