https://school.programmers.co.kr/learn/courses/30/lessons/160586
keymap을 탐색하면서 문자의 인덱스를 딕셔너리에 추가해준다.
여기에서 원소의 길이가 '<= 100' 이므로 딕셔너리를 101로 초기화 한다.
주의할 점으로 targets의 문자열을 만들 수 없을 경우, -1를 반환해야하므로
한 글자라도 만들 수 없는 경우 break문으로 빠져나온다.
for~else 문은 for문이 완전히 끝났을 경우 실행되는 원리로, 처음에 answer을 -1로 초기화 하였기 때문에 +1를 해준다.
from collections import defaultdict
def solution(keymap, targets):
answer = [-1 for _ in range(len(targets))]
dd = defaultdict(lambda: 101)
for key_ in keymap:
for idx, k in enumerate(key_, start=1):
dd[k] = min(dd[k], idx)
for idx, target in enumerate(targets):
for t in target:
if t in dd.keys():
answer[idx] += dd[t]
else:
answer[idx] = -1
break
else:
answer[idx] += 1
return answer
'Coding Test > 프로그래머스' 카테고리의 다른 글
[프로그래머스] / [Level 1] / [Python] [PCCE 기출문제] 9번 / 이웃한 칸 (0) | 2024.01.16 |
---|---|
[프로그래머스] / [Level 1] / [Python] 둘만의 암호 (0) | 2024.01.16 |
[프로그래머스] / [Level 1] / [Python] 문자열 나누기 (0) | 2024.01.15 |
[프로그래머스] / [Level 1] / [Python] 숫자 짝꿍 (0) | 2024.01.12 |
[프로그래머스] / [Level 2] / [Python] 디펜스 게임 (0) | 2024.01.11 |