잠 안 올 때 끄적끄적
[프로그래머스/파이썬/python3] Lv1. 가장 가까운 글자 본문
> 문제
> 코드
나는 처음에 이렇게 풀었는데 쓸데없는 코드가 들어있었다.
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
이런식으로 쓸 수 있겠다.
'코딩 > 프로그래머스' 카테고리의 다른 글
[프로그래머스/파이썬/python3] Lv1. [1차] 다트 게임 (1) | 2023.02.02 |
---|---|
[프로그래머스/파이썬] Lv1. 기사단원의 무기 (0) | 2023.01.29 |
[프로그래머스/파이썬/python] Lv1. 명예의 전당 (1) (0) | 2023.01.29 |
[프로그래머스/파이썬/python3] Lv1. 문자열 나누기 (0) | 2023.01.29 |
[프로그래머스/파이썬/python3] Lv1. 크기가 작은 부분 문자열 (0) | 2023.01.29 |